我需要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;
}
任何指针将不胜感激。
许诺背后的基本原则之一是它是异步处理的。这意味着您无法创建承诺,然后立即在代码中同步使用其结果(例如,不可能从启动承诺的函数中返回承诺的结果)。
相反,您可能想做的是 返回整个承诺本身。然后,任何需要其结果的函数都可以调用.then()
promise,并且在promise被解决时结果就在那里。
#1处的console.log生成正确的数据。console.log#2始终生成“a”; 如有任何指示,将不胜感激。
问题内容: 我想使用这样的Promise来调用Google Maps Geocoding API: 当我调用函数请求时,我发现我得到了一个Promise而不是一个值: 为什么不答应。然后在返回值之前执行?我如何从这个承诺而不是另一个承诺中获得价值? 问题答案: 如果您依赖承诺来返回数据,则必须从函数中返回承诺。 一旦调用堆栈中的1个函数异步,那么要继续线性执行,所有要调用它的函数也必须异步。(异步
问题内容: 我正在尝试编写一个函数(使用WebdriverJS lib),该函数遍历元素列表,检查名称并构建与该名称相对应的xpath定位器。我在这里简化了xpath定位器,所以不用注意。 我在这里面临的问题是:1)调用此函数返回未定义。据我了解,这是因为return语句不在其位置,而是:2)将其放置在同步代码通常可以正常工作的正确位置,不适用于异步承诺,因此调用此函数将返回相同的未定义,但是因为
函数getfile: 但我需要一个数组而不是这个promise的东西。怎么解决?
有许多关于如何在使用JavaScript Promise编程时使用“然后”和“捕获”的教程。然而,所有这些教程似乎都忽略了一个重要的点:从然后/捕获块返回以打破promise链。让我们从一些同步代码开始来说明这个问题: 本质上,我正在测试一个捕获的错误,如果不是我期望的错误,我会返回给调用方,否则程序将继续。然而,这种逻辑在Promise中不起作用: 这种逻辑用于我的一些单元测试,我希望函数以某种
我正在尝试访问秒napshot.data()返回的内容,但有一个问题,如下面的评论所述。我试图创建一个异步函数,但无济于事。知道出了什么问题吗?请查看2条评论。