什么是以下两者的区别:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return "bbb"; // directly returning string
})
.then(function(result) {
console.log(result);
});
以及这个:
new Promise(function(res, rej) {
res("aaa");
})
.then(function(result) {
return Promise.resolve("bbb"); // returning a promise
})
.then(function(result) {
console.log(result);
});
我问这个问题是因为我在使用Angular和$http服务的链式.then()时得到了不同的行为。由于代码有点多,因此首先是上面的示例。
Promise.resolve()
是不必要的。 - JLRishethen
处理程序返回 Promise 没有任何问题,事实上,这是 Promise 规范的一个关键方面,您可以这样做。 - user663031then
- 其他语言中称之为then
既是map
又是flatMap
。 - Benjamin Gruenbaumnew Promise((res, rej) => { return fetch('//google.com').then(() => { return "haha"; }) }).then((result) => alert(result));
这段代码将会一直挂起(永远不会被解决)。但是如果我把return "haha";
改成return res("haha");
那么它就有用了,并触发警报弹窗“haha”。难道fetch() .then()没有已经把“haha”包装进一个已解决的promise吗? - Shawnres
参数,而不是返回结果。在Promise构造函数中返回任何东西都将被忽略。 - attempt0