我试图把头放在JavaScript中的promise对象周围。因此,这里有这段代码。我在promise对象的两侧都有一个promise对象和两个console.log()。我以为会打印

但它打印

hi

zami

There!
为什么会这样呢?我对Promise的工作方式了解为零,但是我了解异步回调在JavaScript中的工作方式。有人可以阐明这个话题吗?
console.log('hi');
var myPromise = new Promise(function (resolve, reject) {
    if (true) {
        resolve('There!');
    } else {
        reject('Aww, didn\'t work.');
    }
});

myPromise.then(function (result) {
    // Resolve callback.
    console.log(result);
}, function (result) {
    // Reject callback.
    console.error(result);
});
console.log('zami');

最佳答案

promise 执行是异步的,这意味着它已执行,但是程序不会等到完成后再继续其余代码。

基本上,您的代码正在执行以下操作:

  • 登录“嗨”
  • 创建一个 promise
  • 执行 promise
  • 登录'zami'
  • Promise已解决,并记录“在那里”。

  • 如果要打印“嗨,扎米”,则必须
    myPromise.then(function (result) {
        // Resolve callback.
        console.log(result);
        console.log('zami');
    }, function (result) {
        // Reject callback.
        console.error(result);
    });
    

    09-17 18:25