我正在试图弄清楚如何使promises与成功和错误回调一起工作,例如在ajax中。
我有以下承诺:
var promise = new Promise(function(success, error) {
if (true) {
success("Stuff worked!");
}
else {
error(Error("It broke"));
}
});
promise.then(function(result)
{
console.log(result);
}, function(err)
{
console.log(err);
});
我希望它能像这样工作:
promise.success(function(response)
{
console.log(response);
}).error(functin(err)
{
console.log(err);
});
我想做什么?
答案 0 :(得分:2)
承诺只是使用不同的术语,您的.success
和.error
会在承诺上翻译为.then
和.catch
。
promise
.then(function(value) {
console.log(value);
})
.catch(function(err) {
console.log(err);
});
如果你真的想要(请不要),你可以这样做
Promise.prototype.success = Promise.prototype.success || Promise.prototype.then;
Promise.prototype.error = Promise.prototype.error || Promise.prototype.catch;
答案 1 :(得分:0)
success
和error
只是语法糖,与以下内容相同:
function CustomPromise(callback){
this.promise = new Promise(callback);
}
// Success and error are merely shorthand functions
CustomPromise.prototype.success = function(callback){
this.promise.then(callback,null);
};
CustomPromise.prototype.error = function(callback){
this.promise.then(null,callback);
}
// Expose the rest of the promise interface, especially `then` and `catch`
请注意,我没有扩展原生Promise
原型,因为这是不好的做法。
我建议您坚持使用then(success,error)
,因为这已成为承诺的“标准”接口。 jQuery和其他几个库在某种程度上遵循这个。