JS承诺:然后和捕获之间有什么区别
JS Promises: What is the difference between then and catch
我正在尝试重新实现promise库。根据我的理解,then
会监听promise状态何时更改,并根据结果执行成功回调或失败回调。从MDN文档来看,catch
似乎与错误解决有关——不过我认为这就是为什么。它们之间有什么区别?
这是我当前的代码:
//Not sure what this is for
var rejected = {}, resolved = {}, waiting = {};
var Promise = function (value, status) {
};
Promise.prototype.then = function (success, _failure) {
var context = this;
setInterval(function() {
if (context.status) {
success();
} else if (success === undefined) {
return;
} else {
_failure();
}
}, 100);
};
Promise.prototype.catch = function (failure) {
return failure;
};
var Deferred = function (promise) {
this.promise = promise || new Promise();
this.promise.status = undefined;
};
Deferred.prototype.resolve = function (data) {
this.promise.data = data;
this.promise.status = true;
};
Deferred.prototype.reject = function (error) {
this.promise.data = error;
this.promise.status = false;
};
var defer = function () {
return new Deferred();
};
module.exports.defer = defer;
它们的工作方式没有太大区别。它们之间唯一的区别是catch
不接受success
和failure
回调,而只接受failure
回调。它可以简单地实现为
Promise.prototype.catch = function(onFailure) {
return this.then(null, onFailure);
};
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 什么是&&在没有if的行中的变量之间
- DOM元素和angular元素之间的主要区别是什么
- 什么's本地node.js服务器和python简单http服务器之间的区别
- JSDoc:模块和名称空间之间的关系是什么
- 什么'$.get和$.ajax之间的区别是什么
- Math.min()和Math.max()之间有什么区别?在Javascript中
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- webpack开发模式和生产构建模式之间有什么区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 什么's extjs中的mon()和on()之间的区别
- XMLHttpRequest对象的open()和send()方法之间有什么区别
- 在使用JS的Ajax调用中,ajaxComplete和beforesend之间有什么区别
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- 什么's使用脚本标记调用文件和ajax之间的区别
- $(e.target).find和template.find('input').value之间有什么区别
- 什么'“dest”和“dist”之间的区别是什么
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 在测试间谍的上下文中,存根和mock之间有什么区别?(茉莉花)
- webpack中的源映射之间有什么区别