【发布时间】:2015-09-17 21:29:18
【问题描述】:
我有这个代码:
let p1 = new Promise(function (resolve, reject) {
setTimeout(function () {
resolve({dogs: ['Fido', 'Spot']});
}, 2000);
});
p1.then(function (val) {
console.log('first then');
console.dir(val);
return _.extend(val, {cats: ['Fluffy', 'Whiskers']});
}).then(function (val) {
console.log('second then');
console.dir(val);
});
意外的控制台输出显示:
我不明白cats 在实际附加到对象之前如何可能成为值的一部分。不过,第二个then 中打印的结果对我来说很有意义。我错过了什么吗?
【问题讨论】:
-
查看控制台中的
i弹出窗口。你看到的是后来变异的对象。 -
它说“下面的对象状态在第一次扩展时被捕获。”我什至不知道这意味着什么......
-
是 underscore.js 的 _.extend() 吗?
-