Какова цель thunkToPromise в сопрограммной библиотеке? - PullRequest
0 голосов
/ 24 ноября 2018

Я знаю, 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, чтобы он что-то значил?

1 Ответ

0 голосов
/ 24 ноября 2018

Thunk - это функция без параметров

Нет.Thunk - это функция, которая принимает только обратный вызов для пересылки своего результата.Это не требует data параметров, это правда, только «выходной параметр».

Кроме того, есть странный рекурсивный вызов res(res)

Это не рекурсивно, это просто сломано.Кто-то перепутал result и resolve.Вы нашли это в текущем выпуске библиотеки?

...