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