如何在 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
});
我有一个函数:
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
});