首页 > 解决方案 > 如何从嵌套的延迟 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);

标签: javascript

解决方案


您的问题是您正在使用以同步方式返回承诺的异步调用。当你返回它whatIneed的末尾时,REST它的值仍然是undefined因为then来自client调用的块还没有执行。

如果您使用的是转译器,您可以await在返回数据之前使用它来等待数据,或者您可以直接从中返回承诺REST,然后像这样使用它REST(settings).then(function(data) { // do something})


推荐阅读