异常处理
改进后的代码是如许的:
- function Promise(fn) {
- var state = 'pending',
- value = null,
- callbacks = [];
- this.then = function (onFulfilled) {
- if (state === 'pending') {
- callbacks.push(onFulfilled);
- return this;
- }
- onFulfilled(value);
- return this;
- };
- function resolve(newValue) {
- value = newValue;
- state = 'fulfilled';
- setTimeout(function () {
- callbacks.forEach(function (callback) {
- callback(value);
- });
- }, 0);
- }
- fn(resolve);
- }
上述代码的思路是如许的:resolve履行时,会将状况设置为fulfilled,在此之后调用then添加的新回调,都邑急速履行。
这琅绫腔有任何处所将state设为rejected,为了让大年夜家聚焦在核心代码上,这个问题后面会有一末节专门参加。
链式Promise
那么这里问题又来了,如不雅用户再then函数琅绫擎注册的仍然是一个Promise,该若何解决?比如下面的例4:
- // 例4
- getUserId()
- .then(getUserJobById)
- .then(function
推荐阅读
16. 美国法律论坛71万账户泄漏,涉国度安然局、FBI等本年4月,达拉斯紧急警备孀体系被黑客入侵。导致该城市的156个紧急戒备器被激活,警笛声持续一个小时,激发市平易近惊恐。 在以前的201>>>详细阅读
本文标题:30分钟,让你彻底明白Promise原理
地址:http://www.17bianji.com/lsqh/35631.html
1/2 1