构建异步API的一种流行的替代方式是使用promise(有时也被称为deferred或future)模式。已经在本章讨论过的异步API使用回调函数作为参数。downloadAsync(file.txt,function(file){ console.log(file:+f ...
构建异步API的一种流行的替代方式是使用promise(有时也被称为deferred或future)模式。已经在本章讨论过的异步API使用回调函数作为参数。
downloadAsync('file.txt',function(file){ console.log('file:'+file);});
基于promise的API不接收回调函数作为参数。相反,它返回一个promise对象,该对象通过其自身的then方法接收回调函数。
var p=downloadP('file.txt');p.then(function(file){ console.log('file: '+file);});
这里看不出与原先的版本有什么不同。但是promise的力量在于它们的组合性。传递给then方法的回调函数不仅产生影响,也可以产生结果。通过回调函数返回一个值,可以构造一个新的promise。
var fileP=downloadP('file.txt');var lengthP=fileP.then(function(file){ return file.length;});lengthP.then(function(length){ console.log('length: '+length);});
理解promise的一种方法是将它理解为表示最终值的对象。它封装了一个还未完成的并发操作,但最终会产生一个结果值。then方法允许我们提供一个代表最终值的一种类型的promise对象,并产生一个新的promise对象来代表最终值的另一种类型,而不管回调函数返回了什么。
原标题:[Effective JavaScript 笔记]第68条:使用promise模式清洁异步逻辑
关键词:JavaScript
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。