node NPM库promise 异步任务状态管理
NPM酷库
每天两分钟,了解一个流行NPM库。
JavaScript的优势就在于其基于异步事件模型,从而Node.js能够拥有非常强大的性能表现。但是,JavaScript的callback方式做异步处理,多层级情况下对人而言简直是噩梦,故而称之为回调地域:
Model.count(filters, (error, count) => {
if(error) {
console.error(error);
} else {
Model.find(filters, (error, result) => {
if(error) {
console.error(error);
} else {
// ...
}
})
}
})上述代码中,仅仅包含两层回调,在实际开发中,经常会遇到处理涉及七八层回调的情况,可以想象多么恐怖,针对这种情况,产生了一系列的异步任务管理库,Promise就是最常用的一个。
Promise
Promise 是一个划时代的库,因为Promise产生后,后续的ES7标准的async/await就是基于Promise的,而async/await机制让人能够以同步样式的代码处理异步任务,彻底解决了回调问题。
而Promise的机制其实很简单,它将异步任务抽象为三种状态Pending(进行中)、Fulfilled(完成)、Rejected(失败)。

针对上文中的代码,用Promise方式可以写成:
Model.count(filters)
.then((count)=>{
return Model.find(filters);
})
.then((results)=>{
// ...
})
.catch((error)=>{
console.error(error)
});用Promise改写后,原来的多层回调会被“拉扁”成1~2层,形成一个链状调用。当然前提是上述的Model.find()和Model.count()得支持Promise方式调用,如果不支持,我们可以将一个callback方式的函数转换成Promise样式:
function find(filters){
return new Promise((resolve,reject)=>{
Model.find(filters,(error,results)=>{
if(error){
reject(error);
}else{
resolve(results);
}
});
});
}上述代码中find()函数返回了一个Promise对象,遗憾的是某些古老的浏览器没有内置Promise对象,那么我们可以使用promise库:
const Promise = require('promise');参考资料
https://developer.mozilla.org...
https://github.com/then/promise
以上就是node NPM库promise 异步任务状态管理的详细内容,更多关于node NPM库promise 的资料请关注脚本之家其它相关文章!
相关文章
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
这篇文章主要介绍了Node.js读指定文件夹输出该文件夹文件树,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04
详解nodejs实现本地上传图片并预览功能(express4.0+)
本篇文章主要介绍了nodejs实现本地上传图片并预览功能(express4.0+) ,具有一定的参考价值,有兴趣的可以了解一下2017-06-06
node.js中的http.response.addTrailers方法使用说明
这篇文章主要介绍了node.js中的http.response.addTrailers方法使用说明,本文介绍了http.response.addTrailers的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下2014-12-12


最新评论