0

我知道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,以便它做一些有意义的事情?

4

1 回答 1

0

thunk 是一个没有参数的函数

不,thunk 是一个只需要回调来转发其结果的函数。它确实没有数据参数,这是真的,只有一个“输出参数”。

另外还有这个奇怪的递归调用res(res)

它不是递归的,它只是被破坏了。result有人混为一谈resolve。您是否在当前版本的库中找到了这个?

于 2018-11-24T12:17:17.750 回答