你的位置:首页 > 软件开发 > Java > [Effective JavaScript 笔记]第68条:使用promise模式清洁异步逻辑

[Effective JavaScript 笔记]第68条:使用promise模式清洁异步逻辑

发布时间:2016-08-04 18:00:09
构建异步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 (#换成@)。