【发布时间】:2020-08-10 01:05:56
【问题描述】:
当 Promise 产生和消费时,我对幕后发生的事情感到非常困惑。请澄清我的观点,并为我的英语不好感到抱歉。
- 使用新关键字创建空白对象 Promise 构造函数是 调用和 new 关键字设置 Promise 构造函数指向的 this 空白对象 this = blankobject。
- Promise 构造函数在参数中接收回调(执行函数) 并调用执行器函数。
- 执行器函数接收两个回调 (resolve,reject) 作为参数
- setTimeout 在 executor 函数中被调用并且 setTimeOut 是 异步代码
- 异步代码进入后台,然后 Promise 构造函数返回 Promise 对象以前是空白对象和 Promise 对象引用 保存到 myPromise。
- 创建了一个变量
接下来会发生什么?当then方法被调用时then方法的代码进入后台?我想它会进入后台,变量是 console.log // 10
主代码执行完成后,异步代码启动setTimeout回调开始执行,执行完成后promise被满足,resolved函数返回值。这个值如何存储在 Promise 对象中,then 方法中发生了什么?
let myPromise = new Promise (
(resolve, reject) => {
setTimeout(() => {
console.log(getIDs)
resolve(10);
}, 1500);
}
)
let a = 10
myPromise.then(val => {
console.log(val);
})
console.log(a)
【问题讨论】:
-
您可以在DOCUMENTATION找到所有这些问题的答案
-
我想看看 then 方法对我们做了什么我看不到的,如果你用代码示例解释我,我很感激你
-
简而言之,当你调用
resolve(..)时,你传递给.then(..)的回调函数就会被执行。myPromise只是Promise的一个实例。它永远不会是空白的。至于进入后台,其工作原理取决于 JavaScript 引擎 -
在正常执行中然后调用方法但是我传入的回调然后方法无法调用并且代码转到下一行并打印我在上面示例中显示的变量然后在promise解决后开始执行异步代码调用 then 方法中的回调告诉我我是否正确,并告诉我为什么我的问题得到 -1 我是 stackoverflow 的新手。
标签: javascript promise es6-promise