摘要:上述代碼輸出結(jié)果為大概秒后輸出上述代碼輸出如下大約秒后輸出上述代碼輸出結(jié)果如下大約五秒輸出總結(jié)如下在形如語句語句中語句中如果不使用語句語句中無法接收到語句中的參數(shù)語句中如果返回的是語句會等待語句的參數(shù)傳遞過來
demo1:
var MongoClient = require("mongodb").MongoClient; var count = 0; var promise1 = new Promise(function(resolve, reject) { MongoClient.connect("mongodb://localhost:27017/zuckjet", function(err, db) { if (db) { var collection = db.collection("users"); collection.find({}).toArray(function(err, docs) { resolve(docs); }); } if (err) { reject(err); } }); }); promise1.then(function(data) { setTimeout(function() { console.log(++count); }, 5000); }).then(function(res) { console.log("second function begin to print"); console.log(count); })
上述代碼輸出結(jié)果為:
second function begin to print
0
1 //大概5秒后輸出
dem02:
var MongoClient = require("mongodb").MongoClient; var count = 0; var promise1 = new Promise(function(resolve, reject) { MongoClient.connect("mongodb://localhost:27017/zuckjet", function(err, db) { if (db) { var collection = db.collection("users"); collection.find({}).toArray(function(err, docs) { resolve(docs); }); } if (err) { reject(err); } }); }); promise1.then(function(data) { new Promise(function(resolve, reject) { setTimeout(function() { console.log(++count); resolve(count); }, 5000); }); }).then(function(res) { console.log("second function begin to print"); console.log(res); console.log(count); })
上述代碼輸出如下:
second function begin to print
undefined
0
1 //大約5秒后輸出
demo3:
var MongoClient = require("mongodb").MongoClient; var count = 0; var promise1 = new Promise(function(resolve, reject) { MongoClient.connect("mongodb://localhost:27017/zuckjet", function(err, db) { if (db) { var collection = db.collection("users"); collection.find({}).toArray(function(err, docs) { resolve(docs); }); } if (err) { reject(err); } }); }); promise1.then(function(data) { return new Promise(function(resolve, reject) { setTimeout(function() { console.log(++count); resolve(count); }, 5000); }); }).then(function(res) { console.log("second function begin to print"); console.log(res); console.log(count); })
上述代碼輸出結(jié)果如下:
1 //大約五秒輸出
second function begin to print
1
1
總結(jié)如下:
在形如:promise.then(...語句1...).then(...語句2...)中,
語句1中如果不使用return語句,語句2中無法接收到語句1中的參數(shù)
語句1中如果返回的是promise,語句2會等待語句1的resolve參數(shù)傳遞過來
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87127.html
摘要:寫在前面這一章的順序?qū)τ谖唇佑|過使用過的童鞋而言略抽象了,前邊幾章主要為了說明和之前的異步方式相比有什么優(yōu)勢和它能解決什么問題,后邊才詳解的設(shè)計和各種場景下如何使用。建議先了解和簡單使用過后再閱讀,效果更佳。 寫在前面:Promise這一章的順序?qū)τ谖唇佑|過使用過Promise的童鞋而言略抽象了,前邊幾章主要為了說明Promise和之前的異步方式相比有什么優(yōu)勢和它能解決什么問題,后邊才...
摘要:回調(diào)函數(shù)成功回調(diào)處理器失敗回調(diào)處理器用戶發(fā)送一個向百度服務(wù)器獲取數(shù)據(jù)的異步請求無阻塞高并發(fā)的的誕生更加嚴(yán)重的依賴異步操作才能完成無阻賽高并發(fā)的特性。 Promise Promise 是什么? 詞語本意: 發(fā)音:[?pr?m?s] 詞性:名詞, 翻譯:許諾,允諾。 MDN解釋 Promise 對象用于一個異步操作。 一個Promise表示一個現(xiàn)在,將來或永不可能可用的值。 按照書寫方...
摘要:回調(diào)函數(shù)模式類似于事件模型,因為異步代碼也會在后面的一個時間點才執(zhí)行如果回調(diào)過多,會陷入回調(diào)地獄基礎(chǔ)可以當(dāng)做是一個占位符,表示異步操作的執(zhí)行結(jié)果。函數(shù)可以返回一個,而不必訂閱一個事件或者向函數(shù)傳遞一個回調(diào)函數(shù)。 主要知識點:Promise生命周期、Promise基本操作、Promise鏈、響應(yīng)多個Promise以及集成PromiseshowImg(https://segmentfaul...
摘要:對象是一個返回值的代理,這個返回值在對象創(chuàng)建時未必已知。這使得異步方法可以像同步方法那樣返回值異步方法會返回一個包含了原返回值的對象來替代原返回值。 前言 近來參加校招筆試,發(fā)現(xiàn)有好幾道關(guān)于Promise的題目。然而我都沒有了解過。所以,這篇文章以網(wǎng)易筆試的一道題開始,記錄關(guān)于Promise的那些事。文章地址:http://lsxj615.com/2016/08/04... 筆試題 c...
摘要:下一篇大概就是源碼方面的學(xué)習(xí)筆記了龜速學(xué)習(xí)中這一次我是去看了下規(guī)范照例傳送門圖靈社區(qū)規(guī)范首先吧個人總結(jié)下該用的詞解決結(jié)婚拒絕婉拒終值值傳家寶拒因好人卡等等異常車禍理下概念我們的的就像是一場姻緣對吧解決呢就是結(jié)婚成功啦傳家寶也如愿的傳給下一代 下一篇大概就是源碼方面的學(xué)習(xí)筆記了...龜速學(xué)習(xí)中... 這一次我是去看了下Promises/A+規(guī)范照例傳送門:圖靈社區(qū)Promises/A+規(guī)...
閱讀 2457·2019-08-30 15:53
閱讀 2572·2019-08-29 13:11
閱讀 2653·2019-08-29 12:45
閱讀 3486·2019-08-29 12:41
閱讀 2326·2019-08-26 10:14
閱讀 2154·2019-08-23 14:39
閱讀 2314·2019-08-23 12:38
閱讀 3378·2019-08-23 12:04