考虑以下代码:
var p = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve("OK");
}, 1000);
});
p.then().then(function(data) {
console.log(data);
});
它输出"OK"。
我不明白在第一个then
被调用后发生了什么。当第一个then
被调用时,它返回undefined
,然后解析为为此then
创建的promise的值undefined
。
然而,由于某种原因,当第二个then
被调用时,它将"OK"作为data
传递,并随后记录它。这个"data"是从哪里来的?
then
函数没有提供解析函数时,会使用默认函数。该函数只是返回传递给then
的任意值。在此情况下为"OK"
。 - fubarthen
被调用时,它返回的是undefined
":不,这可能是误解。.then()
总是返回一个Promise。如果它返回了undefined
,你就无法链式地添加另一个then()
。 - trincot