javascript - 为什么需要在 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;
...因为这似乎重现了相同的结果?
谢谢,
斯图
解决方案
then 方法返回一个允许方法链接的 Promise。
如果作为处理程序传递给 then 的函数返回一个 Promise,则等效的 Promise 将暴露给方法链中的后续 then。
有关更多详细信息,请参阅文档。
用一个非常简单的术语(口语):
- 去餐厅(承诺成功)
- 然后,喝点茶点。
- 如果你不这样做(承诺失败)
- 然后,你会错过享受。
推荐阅读
- caching - 寻求作曲家包的开源存储库,通过它代理我的构建请求,并构建本地缓存以供将来使用
- javascript - 反应组件中的多个输入,保存每个索引
- graphql - React w/ Apollo & Drupal nodeQuery - 如何定义/传递变量?
- c# - .Net Framework 和 .Net Core 使用的 .Net Standard 2.0 dll 中的 NuGet 包
- javascript - 即在我将它们从我的项目中取出后抛出 SCRIPT1014 Invalid character
- python - Python 请求 - 在有页面时获取和保存图像
- ios - 如何在iOS swift中隐藏/查看标题视图表
- ios - UITextView 延迟 AttributedString 链接 SwiftUI
- javascript - 如何完全推迟加载 Google reCaptcha 直到页面完全加载
- python - 使用python读取json文件以在postgres中创建数据库