【发布时间】:2017-07-11 04:24:29
【问题描述】:
我正在处理承诺,这是我的代码:
function call1() {
return new Promise(function(resolve, reject) {
resolve('resolved from call 1');
});
}
function call2(result) {
return new Promise(function(resolve, reject) {
resolve(result + ' - resolved from call 2');
});
}
function callP() {
call1()
.then(result => call2(result))
.then(function(result) {
console.log(result);
});
}
callP();
这给了我输出:
从调用 1 解决 - 从调用 2 解决
但是当我改变时:
.then(result => call2(result))
到:
.then(function(result) {
call2(result);
})
结果是undefined。
据我了解:
function(result) {
call2(result);
}
和:
result => call2(result)
意思是一样的。我在这里做错什么了吗?
【问题讨论】:
-
result => call2(result)是隐式返回,而function语法需要显式返回才能执行相同的操作 -
@GerardoFurtado 有趣的是,规范并没有考虑隐式回报。我想这更多是语义和副作用的差异而不是句法差异。
-
@AndrewLi 你是对的,它没有提到
return。我将重新提出这个问题。
标签: javascript ecmascript-6 promise es6-promise arrow-functions