Node.js与Promise

什么是Promise
简单来讲,promise是ES6一个API、构造函数,也是一种规范,更是一种·解决callcack深层嵌套·的方案,还是一种带有then方法支持链式操作的框架.

使用Promise的好处
Javascript的特点是异步,Javascript不能等待,如果你实现某件需要等待的事情,你不能停在那里一直等待结果回来,相反,底线是使用回调callback:你定义一个函数,这个函数只有等到结果返回时才能被调用。

那么为什么这样做好处优于回调呢?标准的回调模式在我们处理请求时需要同时提供回调函数:
 

request(url, function(error, response) { 
  // handle success or error.
});
doSomethingElse(); 

很不幸,这段代码意味着这个request函数并不知道它自己什么时候能够完成,当然也没有必要,我们最终通过回调传递结果。这会导致多个回调形成了嵌套回调,或者称为回调陷阱。

queryTheDatabase(query, function(error, result) { 
  request(url, function(error, response) {
    doSomethingElse(response, function(error, result) {
      doAnotherThing(result, function(error, result) {
        ...
      });
    });
  });
});

Promise能够解决这种问题,允许低层代码创建一个request然后返回一个对象,其代表着未完成的操作,让调用者去决定应该加入什么回调。 因为then返回一个promise,它意味着promise能够被chain串行链条花,这样能避免回调地狱:

//by zhengkai.blog.csdn.net
queryTheDatabase()
	.then(request)
	.then(doSomethingElse)
	.then(doAnotherThing)
	.then(...)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值