我创建了两个 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;
}
最佳答案
Promise 构造函数中的代码在创建 promise 时运行,并且同步运行,这让一些人感到惊讶。所以即使没有 then()
一切仍然运行。
new Promise(resolve => console.log("running"))
然而,setTimeout
回调中的代码在调用之前不会运行,但即使没有 then()
也会运行
new Promise(resolve => {
console.log("promise created")
setTimeout(() => console.log("this runs later"), 1000)
})
关于javascript - 没有调用 .then 方法时,Promise 是如何运行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51431235/