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

How to wrap a callback function in a Parse.Promise

我有一个函数:

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()

如有任何帮助,我们将不胜感激。

您走在正确的轨道上,但 Parse 的 promise 构造函数不采用 resolve / reject 函数。相反,让你的包装器构建 return 一个没有参数的承诺,然后在包装函数的回调中调用该承诺的 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
});