我今天想知道我是否不能简单地支持回调和承诺。你能想到的是否有任何缺点?
function fetchUser(data, success, error) {
var deferred = Q.defer();
var body = {
sharedSecret: config['apiSharedSecret'],
deviceAuth: data.deviceAuth,
username: data.username,
phoneNumber: data.phoneNumber
};
request.post({
url: url,
json: body,
}, function (err, httpResponse, body) {
if (err) {
deferred.reject(new Error(err));
if (typeof error === "function") {
error.call(this, err);
}
return;
}
if (typeof success === "function") {
success.call(this, body);
}
deferred.resolve(body);
});
return deferred.promise;
}
答案 0 :(得分:1)
缺点是它可以使您的代码更复杂。此外,没有回调比承诺有任何优势的情况所以没有必要这样做。但是如果你想这样做,你应该写一个这样的函数来避免代码重复。
function defer(success, error) {
var deferred = Q.defer();
deferred.promise.then(success, error);
return deferred;
}