<分区>
在我的项目中,我有一个运行时间很长的操作,所以我决定将它放在 Promise
中,因为我认为这样我可以继续执行其他操作,而内部代码Promise
正在运行。
调试时发现Promise
外的代码只有在Promise
内的代码执行完毕后才会执行。
这是我在我的项目中所做的一个例子(它模拟了一个长时间的操作,所以需要一段时间):
new Promise(function(resolve, reject) {
var i = 0;
while (i < 1000000000) {
i++
}
console.log("Executing inside Promise");
});
console.log("Executing outside Promise");
我不太确定为什么会这样,这就是我问这个问题的原因。但我认为这与 Promise
中的代码是同步的这一事实有某种关系。
实际上,当它是异步的(即 setTimeout()
方法)时,它会在外部代码执行完毕后运行。
new Promise(function(resolve, reject) {
setTimeout(function() {
var i = 0;
while (i < 1000000000) {
i++
}
console.log("Executing inside Promise");
}, 3000)
});
console.log("Executing outside Promise");
但是我还是想不通为什么Promise
里面的代码是同步执行的?
它不应该异步执行吗?