摘要:上述代码输出结果为大概秒后输出上述代码输出如下大约秒后输出上述代码输出结果如下大约五秒输出总结如下在形如语句语句中语句中如果不使用语句语句中无法接收到语句中的参数语句中如果返回的是语句会等待语句的参数传递过来
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); })
上述代码输出结果为:
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); })
上述代码输出结果如下:
1 //大约五秒输出
second function begin to print
1
1
总结如下:
在形如:promise.then(...语句1...).then(...语句2...)中,
语句1中如果不使用return语句,语句2中无法接收到语句1中的参数
语句1中如果返回的是promise,语句2会等待语句1的resolve参数传递过来
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/87127.html
摘要:写在前面这一章的顺序对于未接触过使用过的童鞋而言略抽象了,前边几章主要为了说明和之前的异步方式相比有什么优势和它能解决什么问题,后边才详解的设计和各种场景下如何使用。建议先了解和简单使用过后再阅读,效果更佳。 写在前面:Promise这一章的顺序对于未接触过使用过Promise的童鞋而言略抽象了,前边几章主要为了说明Promise和之前的异步方式相比有什么优势和它能解决什么问题,后边才...
摘要:回调函数成功回调处理器失败回调处理器用户发送一个向百度服务器获取数据的异步请求无阻塞高并发的的诞生更加严重的依赖异步操作才能完成无阻赛高并发的特性。 Promise Promise 是什么? 词语本意: 发音:[ˈprɒmɪs] 词性:名词, 翻译:许诺,允诺。 MDN解释 Promise 对象用于一个异步操作。 一个Promise表示一个现在,将来或永不可能可用的值。 按照书写方...
摘要:回调函数模式类似于事件模型,因为异步代码也会在后面的一个时间点才执行如果回调过多,会陷入回调地狱基础可以当做是一个占位符,表示异步操作的执行结果。函数可以返回一个,而不必订阅一个事件或者向函数传递一个回调函数。 主要知识点:Promise生命周期、Promise基本操作、Promise链、响应多个Promise以及集成PromiseshowImg(https://segmentfaul...
摘要:对象是一个返回值的代理,这个返回值在对象创建时未必已知。这使得异步方法可以像同步方法那样返回值异步方法会返回一个包含了原返回值的对象来替代原返回值。 前言 近来参加校招笔试,发现有好几道关于Promise的题目。然而我都没有了解过。所以,这篇文章以网易笔试的一道题开始,记录关于Promise的那些事。文章地址:http://lsxj615.com/2016/08/04... 笔试题 c...
摘要:下一篇大概就是源码方面的学习笔记了龟速学习中这一次我是去看了下规范照例传送门图灵社区规范首先吧个人总结下该用的词解决结婚拒绝婉拒终值值传家宝拒因好人卡等等异常车祸理下概念我们的的就像是一场姻缘对吧解决呢就是结婚成功啦传家宝也如愿的传给下一代 下一篇大概就是源码方面的学习笔记了...龟速学习中... 这一次我是去看了下Promises/A+规范照例传送门:图灵社区Promises/A+规...
阅读 2438·2019-08-30 15:53
阅读 2553·2019-08-29 13:11
阅读 2645·2019-08-29 12:45
阅读 3466·2019-08-29 12:41
阅读 2308·2019-08-26 10:14
阅读 2135·2019-08-23 14:39
阅读 2295·2019-08-23 12:38
阅读 3355·2019-08-23 12:04