// 参数为Promise对象 let p1 = new Promise(function (resolve, reject) { setTimeout(function () { const n = Math.random() if (n > 0.5){ resolve(1) }else { reject(0) } },3000); }) let p2 = new Promise(function (resolve, reject) { setTimeout(function () { resolve(p1); // 当p1的状态变为fulfilled或rejected时,resolve才会执行 console.log('*') },1000); }).then((data) => { // then执行的回调函数是由p1决定的,而不是p2 console.log('resolve执行成功') console.log(data) }, (error) => { console.log('resolve执行失败') console.log(error) })
时间: 2024-04-02 09:05:50 浏览: 94
ES6 Promise对象概念及用法实例详解
这段代码创建了两个 Promise 对象:p1 和 p2。p1 在 3 秒后会随机生成一个大于 0.5 的数,如果大于 0.5,则会调用 resolve 方法将状态变为 fulfilled,并传递参数 1,否则会调用 reject 方法将状态变为 rejected,并传递参数 0。
p2 在 1 秒后会调用 resolve 方法,将状态变为 fulfilled,并传递 p1 对象作为参数。然后通过链式调用 then 方法来处理 p2 的 fulfilled 状态。如果 p1 的状态变为 fulfilled,则会执行第一个回调函数,输出 'resolve执行成功' 和 p1 的值。如果 p1 的状态变为 rejected,则会执行第二个回调函数,输出 'resolve执行失败' 和 p1 的错误信息。
请注意,then 方法执行的回调函数是由 p1 决定的,而不是 p2。
阅读全文