diff --git "a/8. \345\274\202\346\255\245\345\244\204\347\220\206/8-6. [\346\211\251\345\261\225]\346\211\213\345\206\231Promise/MyPromise.js" "b/8. \345\274\202\346\255\245\345\244\204\347\220\206/8-6. [\346\211\251\345\261\225]\346\211\213\345\206\231Promise/MyPromise.js" index f60ead1dabd6937517373b2327ea64076b4dde2d..7b8b5f5b62c6760806c6a041fee98e914db76d55 100644 --- "a/8. \345\274\202\346\255\245\345\244\204\347\220\206/8-6. [\346\211\251\345\261\225]\346\211\213\345\206\231Promise/MyPromise.js" +++ "b/8. \345\274\202\346\255\245\345\244\204\347\220\206/8-6. [\346\211\251\345\261\225]\346\211\213\345\206\231Promise/MyPromise.js" @@ -161,6 +161,14 @@ class MyPromise { // 目前状态已经更改 return; } + // 下面这个判断是为了处理value为Promise的情况 + // 这一段代码课程中没有涉及,特此注释说明 + if (isPromise(value)) { + runMicroTask(() => { + value.then(this._resolve.bind(this), this._reject.bind(this)); + }); + return; + } this._state = newState; this._value = value; this._runHandlers(); // 状态变化,执行队列 @@ -285,4 +293,4 @@ class MyPromise { }); } } - +