创建一个成功/错误的承诺,例如像ajax
Creating a promise with success / error for example like ajax
我正在尝试弄清楚如何使承诺与成功和错误回调一起工作,例如在 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);
});
我应该怎么做?
承诺只是使用不同的术语,您的.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;
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和其他几个库在某种程度上遵循这一点。
相关文章:
- 如何在使用替代承诺时解释 ajax 调用中的错误
- jQuery ajax 请求与承诺在IE9中不起作用
- 如何在 ajax 请求中使用承诺对强制数据
- 做一些 ajax 并使用 getJSON 返回一个承诺
- 嵌套的 AJAX 调用列表和 $.when.apply - 延迟承诺无法正常工作
- 如何构建一个在上一个 ajax 承诺解析后等待一段时间的 rx 轮询器
- 创建一个成功/错误的承诺,例如像ajax
- jQuery 承诺(当>时)不适用于使用 $.each 和 $.ajax 遍历数组
- .done() 函数在抓取本地 JSON 文件时未在 AJAX 调用返回的承诺上运行
- 从顺序 jQuery ajax 调用返回承诺
- AJAX 承诺使用数组
- 角度测试:我如何使用ajax测试角度承诺
- 如何知道哪个$.ajax承诺已经解决
- 如何使用确认警报并返回AJAX承诺
- 使用延迟对象/承诺的Ajax调用返回失败
- 使用ajax承诺将内容异步加载到页面中
- 你将如何测试茉莉和香草JS Ajax调用是由一个承诺
- Angularjs v1.5.8 ajax承诺在自定义过滤器中不能正常工作
- 链接ajax请求与jquery承诺
- 无法获得承诺/ajax数据返回到父函数