原文:http://liubin.org/promises-book/#ch2-promise.then
如果 Task A 想给 Task B 传递一个参数该怎么办呢?
答案非常简单,那就是在 Task A 中 return
的返回值,会在 Task B 执行时传给它。
我们还是先来看一个具体例子吧。
function doubleUp(value) {
return value * 2;
}
function increment(value) {
return value + 1;
}
function output(value) {
console.log(value);// => (1 + 1) * 2
}
var promise = Promise.resolve(1);
promise
.then(increment)
.then(doubleUp)
.then(output)
.catch(function(error){
// promise chain中出现异常的时候会被调用
console.error(error);
});
这段代码的入口函数是 Promise.resolve(1);
,整体的promise chain执行流程如下所示。
-
Promise.resolve(1);
传递 1 给increment
函数 -
函数
increment
对接收的参数进行 +1 操作并返回(通过return
) -
这时参数变为2,并再次传给
doubleUp
函数 -
最后在函数
output
中打印结果