如何在Parse.Promise中包装回调函数

时间:2016-07-12 21:25:27

标签: javascript node.js promise parse-server

我有一个功能:

function foo(aString, function(err, callback) {
   //does stuff
}

我需要从一系列Parse.Promises中间调用该函数。

如何将其包装在Parse.Promise中?

我试过了:

//...
return new Parse.Promise(function(resolve, reject) {
            foo(thatString, function(err, data) {
                if(err) return reject(err);
                resolve(data);
            });
        });
}).then(function(data) {
//...

以及其他变体,例如Parse.Promise.as()而不是new Parse.Promise()

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上,但是Parse的promise构造函数没有采取解析/拒绝功能。相反,让你的包装器构建并返回一个没有params的promise,然后在包装函数的回调中调用promise的resolve()reject()方法,如下所示:

var wrappedFoo = function(aString) {
    var promise = new Parse.Promise();
    foo(aString, function(err, data) {
        if (err) { promise.reject(err); }
        promise.resolve(data);
    });
    return promise;
};

这样称呼:

wrappedFoo("bar").then(function(data) {
    // data will be the data passed to the foo callback
}, function(err) {
    // likewise for err
});