javascript - 如何从嵌套的延迟 then() 函数返回
问题描述
我需要使用不同的设置进行许多 API 调用,因此我正在尝试编写一个函数来获取设置对象并返回文本。在对其进行功能化之前,我已经完成了这项工作,但现在我无法弄清楚如何获取数据。变量在data
这里很好,但我怎样才能将它传递回answer
?我尝试添加this
参考,这是我目前的尝试。
function REST(settings) {
var whatIneed;
var parent = this;
client.request(settings).then(
function(data) {
console.log(data);
parent.whatIneed = data;
},
function(response) { PromiseError(response); } )
console.log(whatIneed);
return whatIneed;
}
answer = REST(settings);
解决方案
您的问题是您正在使用以同步方式返回承诺的异步调用。当你返回它whatIneed
的末尾时,REST
它的值仍然是undefined
因为then
来自client
调用的块还没有执行。
如果您使用的是转译器,您可以await
在返回数据之前使用它来等待数据,或者您可以直接从中返回承诺REST
,然后像这样使用它REST(settings).then(function(data) { // do something})
推荐阅读
- javascript - 根据下拉列表值更改文本字段默认值
- php - 如何设置 PHP 内容输出的样式?
- node.js - Nodebeats -> MongoDB 连接使用 mongodb+srv 并且不使用 admin db 仍然抛出未经授权的错误
- javascript - 查询 firestore 中的文档集合并将其保存在变量中始终返回空
- google-apps-script - 类型错误:getCreators() 不是函数
- pdftk - pdftk无法打开文件
- r - 无法提取我在 Panoply 中看到的 R 中的 netcdf 变量
- python - IndexError:标量变量的索引无效,我已尝试使用其他简单函数使用相同的公式,但它不起作用
- c# - C# Azure DevOps Git:无法推送新目录
- ibm-cloud - 如何在 IbmCloud 中部署应用程序?