我试图理解 thunks。我正在学习 Kyle Simpson 在 Lynda 上的 Rethinking Async JS 课程。
我有这个代码:
function makeThunk(fn) {
var args = [].slice.call(arguments, 1);
return function(cb) {
args.push(cb);
fn.apply(null, args);
}
}
function addAsync(x,y, cb) {
setTimeout(function() {
cb(x+y);
}, 1000);
}
var thunk = makeThunk(addAsync, 10,15);
现在,当我执行以下操作时:
thunk(function(sum) {
console.log(sum * sum);
})
thunk(function(sum) {
console.log(sum);
})
结果是 625 打印了两次。
但是,当我执行
thunk(function(sum) {
console.log(sum);
})
thunk(function(sum) {
console.log(sum * sum);
})
结果是 25 执行了两次。
在第一种情况下,我的期望是先打印 625,然后再打印 25。在第二种情况下,先打印 25,然后再打印 625。
为什么我的期望不正确?