【发布时间】:2018-12-28 02:21:46
【问题描述】:
我创建了两个 Promise,但我没有对这些 Promise 运行 then 方法。然而,一旦 promise 对象超出范围,promise 代码就会像调用 .then 一样运行。
如果不调用 .then 方法,Promise 如何解决?
我问是因为我想加载一个带有 Promise 对象的数组,然后按顺序运行 Promise。
function promises_createThenRun() {
const p1 = createPromise1();
const p2 = createPromise2();
console.log('before hello');
alert('hello');
console.log('after hello');
// the two promises run at this point. What makes them run?
}
function createPromise1() {
let p1 = new Promise((resolve, reject) => {
window.setTimeout(() => {
console.log('timer 1');
resolve();
}, 2000);
});
return p1;
}
function createPromise2() {
let p2 = new Promise((resolve, reject) => {
window.setTimeout(() => {
console.log('timer 2');
resolve();
}, 1000);
});
return p2;
}
【问题讨论】:
-
为什么你认为
setTimeout()回调不会被调用? -
不使用 .then 并不意味着函数不会继续执行。
-
询问何时调用 setTimeout 回调。当承诺超出范围时,它们似乎会被调用。
标签: javascript promise es6-promise