如何从嵌套deferred then()函数返回

时间:2018-07-26 20:00:31

标签: javascript

我需要使用不同的设置进行许多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);

1 个答案:

答案 0 :(得分:0)

您的问题是您正在使用异步调用,该调用以同步方式返回promise。当您在whatIneed的末尾返回REST时,其值仍为undefined,因为尚未执行then调用中的client块。

如果您使用的是转译器,则可以使用await等待数据再返回,也可以直接从REST返回promise,然后像REST(settings).then(function(data) { // do something})