【发布时间】:2021-04-18 18:31:14
【问题描述】:
我需要将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;
}
任何指针将不胜感激。
【问题讨论】:
-
不——你不能——你想对
response做的任何操作都必须在.then()处理程序中。你不能以同步的方式编写异步 Javascript! -
这不是关于从承诺中返回数据。第二个
console.log发生在promise 设置theParentId变量之前——因为promise 是异步的,而console.log不是。 -
@Amit,是的,我做到了,但只有抱怨这个问题不够具体,这是真的。
标签: javascript angularjs