当前位置:嗨网首页>书籍在线阅读

08-promise

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.3 promise

promise的出现是为了弥补回调中的一些不足。使用promise可以编写更加安全,且易于维护的代码(关于这一点尚有争议)。

promise并不排斥回调。实际上,依然需要将回调和promise结合在一起使用。 promise所做的就是确保回调始终被以可预期的方式处理,从而避免了一些在只使用callback的情况发生的不愉快的意外和难以定位的bug。

promise的初衷很简单:在调用基于promise的异步函数时,它会返回一个promise实例。其中只可能发生两件事情:被满足(success)或被拒绝(failure)。promise可以保证只有一件事会发生(不可能既满足又拒绝),而结果只会发生一次(如果满足,那么只会被满足一次;如果拒绝,也只会被拒绝一次)。一旦promise被满足或者被拒绝了,就会认为它被处理(settled)了。

promise相比于回调的另一个方便的好处在于,因为promise只是对象,所以它们可以被到处传递。如果想开始一段异步进程,但却希望结果在其他地方被处理,可以直接把promise传给它们(这就类似于把用于订餐的传呼机给自己的朋友,只要需求一样,餐厅显然不会在意谁在预约)。