小编典典

如何从promise返回数据

angularjs

我需要response.data兑现承诺,以便可以通过封闭函数将其返回。我知道,由于正常的JavaScript范围,我可能无法按照编码的方式进行操作。有什么办法可以做到吗?

位于#1 的 console.log 会生成正确的数据。 console.log #2总是产生’a’;

function addSiteParentId(nodeId) {   
    var theParentId = 'a';
    var parentId = relationsManagerResource.GetParentId(nodeId)
                        .then(function(response){                               
                            theParentId = response.data;
                            console.log(theParentId);  // #1
                        });
    console.log(theParentId);  // #2
    return theParentId;
}

任何指针将不胜感激。


阅读 596

收藏
2020-07-04

共1个答案

小编典典

许诺背后的基本原则之一是它是异步处理的。这意味着您无法创建承诺,然后立即在代码中同步使用其结果(例如,不可能从启动承诺的函数中返回承诺的结果)。

相反,您可能想做的是 返回整个承诺本身。然后,任何需要其结果的函数都可以调用.then()promise,并且在promise被解决时结果就在那里。

这是HTML5Rocks的资源,它遍历了Promise的生命周期,以及如何异步解决其输出:http
//www.html5rocks.com/zh-cn/tutorials/es6/promises/
2020-07-04