首页 > 解决方案 > 为什么需要在 javascript Promises 中使用 .then() 方法?

问题描述

Web 开发新手和学习 Javascript。

我一直在关注关于 Promises 的教程,试图了解它们的用途以及它们的用处,我遇到了这段代码:

var isMomHappy = true;

// Promise
var willIGetNewPhone = new Promise(
    function (resolve, reject) {
        if (isMomHappy) {
            var phone = {
                brand: 'Samsung',
                color: 'black'
            };
            resolve(phone);
        } else {
            var reason = new Error('mom is not happy');
            reject(reason);
        }

    }
);

//call our promise
var askMom = function () {
    willIGetNewPhone
        .then(function (fulfilled) {
            // yay, you got a new phone
            console.log(fulfilled);
        })
        .catch(function (error) {
            // ops, mom don't buy it
            console.log(error.message);
        });
}

askMom();

为什么调用和处理 promise 时需要 .then() 方法?

我不能只做以下事情:

var isMomHappy = false;

// Promise
var willIGetNewPhone = new Promise(
    function (resolve, reject) {
        if (isMomHappy) {
            var phone = {
                brand: 'Samsung',
                color: 'black'
            };
            resolve(phone);
            console.log(phone);
        } else {
            var reason = new Error('mom is not happy');
            reject(reason);
            console.log(reason.message);
        }

    }
)

willIGetNewPhone;

...因为这似乎重现了相同的结果?

谢谢,

斯图

标签: javascriptes6-promise

解决方案


then 方法返回一个允许方法链接的 Promise。

如果作为处理程序传递给 then 的函数返回一个 Promise,则等效的 Promise 将暴露给方法链中的后续 then。

有关更多详细信息,请参阅文档

用一个非常简单的术语(口语):

  1. 去餐厅(承诺成功)
  2. 然后,喝点茶点。
  3. 如果你不这样做(承诺失败)
  4. 然后,你会错过享受。

推荐阅读