首页 > 解决方案 > 为什么 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() 异步工作。

标签: javascriptes6-promise

解决方案


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

推荐阅读