如何在WinJS中包装回调函数以获得承诺?

时间:2014-02-10 20:34:17

标签: javascript winjs promise asynccallback

我想知道如何实现转换,例如:

fn(args, function (errors, results) {})

fn(args).then(function (results){})

只需调用类似

的内容即可
makePromise(fn, args).then(function (results))

WinJS

背景:我有一个使用异步回调的预定义接口,但我想将它们用作承诺。

这可能吗?甚至可能直接由WinJS支持?

1 个答案:

答案 0 :(得分:3)

不,我在official docs找不到这样的方法。但是,这应该这样做:

function makePromise(fn, args) {
    return new WinJS.Promise(function init(completeDispatch, errorDispatch) {
        fn(args, function handler(errors, results) {
            if (errors)
                errorDispatch(errors);
            else
                completeDispatch(results);
         });
    });
}