javascript - 为什么 promise.then() 的行为是异步的?
问题描述
在下面的代码中,为什么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() 异步工作。
- 前
- 后
- 成功 你有一辆车!
解决方案
Promise 是异步的
您可以像这样使用等待来进行同步
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
推荐阅读
- android - Jetpack compose 中的 AppCompatActivity 而不是 ComponentActivity
- pine-script - [pine-script],我如何在 MULTIPLE security () 上创建多个“alertcondition”的 ALERT
- gitlab - 更改 LDAP OU 后如何更新 gitlab 用户
- amazon-web-services - k8s中的应用HA
- bigcommerce - BigCommerce API 规范错误
- php - 如何在 cakePHP 中使用 sweetalert
- angular - ng-multi-select-dropdown 不显示从组件传递的静态数据
- c# - 如何使用linq比较两个c#列表数据相等
- mysql - Get rows which doesn't have foreign key
- github - 解释 travis encrypt-file 命令中的 -r 标志