Javascript 为什么promise.then()会异步运行?
在下面的代码中,whyJavascript 为什么promise.then()会异步运行?,javascript,es6-promise,Javascript,Es6 Promise,在下面的代码中,whypromise.then()的行为是异步的。换句话说,为什么浏览器不等待写入promise.then()方法中的代码被执行?是什么告诉浏览器引擎,promise.then()进行异步调用 const money = 500; let promise = new Promise(function(resolve,reject){ if(money > 400){ resolve('You have a car!'); }else{
promise.then()
的行为是异步的。换句话说,为什么浏览器不等待写入promise.then()
方法中的代码被执行?是什么告诉浏览器引擎,promise.then()
进行异步调用
const money = 500;
let promise = new Promise(function(resolve,reject){
if(money > 400){
resolve('You have a car!');
}else{
reject('Yo do not have enough money to buy the Car!');
}
});
console.log('Before');
promise.then(function(data){
console.log('Success '+data);
});
console.log('After');
上面的代码按以下顺序打印输出,这意味着promise.then()异步工作
- 以前
- 之后
- 成功你有一辆车李>
- 承诺是异步的
您可以像这样使用wait来进行同步const money = 500; let promise = new Promise(function(resolve,reject){ if(money > 400){ resolve('You have a car!'); }else{ reject('Yo do not have enough money to buy the Car!'); } }); console.log('Before'); let data = await promise console.log('Success '+data); console.log('After');
结果const money = 500; let promise = new Promise(function(resolve,reject){ if(money > 400){ resolve('You have a car!'); }else{ reject('Yo do not have enough money to buy the Car!'); } }); console.log('Before'); let data = await promise console.log('Success '+data); console.log('After');
Before Success You have a car! After
JavaScript是单线程的,
中的回调函数首先排队。承诺应该是异步的。您可以通过then()
命令强制他们等待。这正是promise.then所做的。但是没有事件循环像它如何用于setTimeout函数。但是没有事件循环像它如何用于setTimeout函数。如果在此处执行代码-latentflip.com/loupe/,则会看到没有任何事件循环正在运行。我假设每个异步调用后面都有一个事件循环。wait