我知道co
有点过时,但是我仍然对它的工作方式感兴趣。我发现很难理解thunkToPromise
函数的用途,
function thunkToPromise(fn) {
var ctx = this;
return new Promise(function (res, rej) {
fn.call(ctx, function (err, res) {
if (err) return rej(err);
if (arguments.length > 2) res = slice.call(arguments, 1);
res(res);
});
});
}
一个thunk是一个没有参数的函数,但是fn
仍然被一个参数调用。此外,还有一个奇怪的递归调用res(res)
,通常会导致堆栈溢出。这里发生了什么?我将如何应用thunkToPromise
使其有意义?
答案 0 :(得分:0)
thunk是没有参数的函数
不。 thunk是仅需要回调转发其结果的函数。它确实不需要任何 data 参数,这是正确的,只有一个“输出参数”。
此外,还有一个奇怪的递归调用
res(res)
它不是递归的,只是被破坏了。有人混淆了result
和resolve
。您是在当前版本的库中找到这个的吗?