2
Интересно, как я могу добиться преобразования, такие как:Как обернуть функцию обратного вызова, чтобы получить обещание в WinJS?
fn(args, function (errors, results) {})
в
fn(args).then(function (results){})
просто вызвав что-то вроде
makePromise(fn, args).then(function (results))
в WinJS.
Фон: у меня есть предопределенный интерфейс с использованием асинхронных обратных вызовов, но я бы хотел использовать их в качестве обещания.
Возможно ли это таким образом? Может быть, даже напрямую поддерживается WinJS?
Это хороший базовый пример. Обратите внимание, что вы потеряете любую область функций, поэтому вам нужно будет привязать любую функцию, используя это. Что-то вроде: 'makePromise (fn.bind (this), args) .then (...);' Также это работает, только если переданная функция принимает один аргумент. – jakerella
Да, это развязывает * context * и дополнительные аргументы, но я думал, что OP им не нужны. Это также излишне усложняло бы пример :-) – Bergi
Конечно, я просто упоминаю об этом, если он кого-то тронет. Этот пример работает для прямого случая выше. – jakerella