javascript - 解析承诺数据
问题描述
考虑下面的代码片段,
function one(){
var prm = new Promise(function(resolve,reject){
resolve("one");
});
prm.customKey = function(){
}
return prm;
}
function two(){
var prm = one();
prm.then(function(res){
return "two";
});
return prm;
}
function three(){
return one().then(function(res){
return "two";
});
}
我希望下面的两个将 res 控制台为“两个”(解决“两个”)。
但奇怪的是 i) 控制台 res 为“一”,ii) 控制台 res 为“二”
i) two().then(function(res){
console.log(res);
});
ii) three().then(function(res){
console.log(res);
});
有人可以解释为什么它会这样。
解决方案
因为你返回 prm。这是一个承诺,一个回报。返回“两个”的地方,此返回语句用于调用它的函数,这意味着 .then 语句中的回调。
它不会影响承诺本身。您只是在 two() 方法中使用了一个 promise(来自 one()),并按原样返回它。
推荐阅读
- laravel - 在用户使用 Laravel Excel 导入之前创建配置文件模型
- flutter - 在异步函数中运行 Palette Generator(由颤振团队提供)会使应用程序冻结一点
- facebook - 如果我使用 facebook/google 帐户凭据登录到某个站点 - 那么它是什么类型的 OAuth 授权类型?
- javascript - 您如何访问和存储“已实现”承诺的值/属性?
- c++ - 将模板类的声明和定义分开在不同的头文件中是否安全?
- azure-functions - Azure function .Net 5 HTTP Trigger Post request 数据限制
- python - Python / Pandas / XML - 将 pandas 数据帧行写回 LXML
- amazon-web-services - 如何让 AWS 路由 53 切换连接更快?
- python - 不了解如何执行递归行
- javascript - 如何在 JavaScript 中调用 Helper.php 函数