【发布时间】:2020-12-05 07:59:49
【问题描述】:
所以我有一个内部有“n”个元素的对象,我必须进入每个元素并使用另一个函数检查状态,该函数的返回应该告诉我有多少元素是“真”但在 forEach 之外循环,问题是一切都在第二个函数的返回内部进行,但在外部打印 [object promise] 这是我的代码:
var count=0;
object_x = "relations": [
{
"rel": "System.LinkTypes.Related",
"url": "545",
"attributes": {
"isLocked": false,
"name": "Related"
}
},
{
"rel": "System.LinkTypes.Related",
"url": "494",
"attributes": {
"isLocked": false,
"name": "Related"
}
},
{
"rel": "System.LinkTypes.Parent",
"url": "508",
"attributes": {
"isLocked": false,
"name": "Parent"
}
}
],
object_x.forEach((element) =>{
var name = element['attributes];
name = name['name];
if(name=='Related'){
let return_of_function_A = function_A(element['url']); //Async function: based on "url" number this function will return true or false
return_of_function_A.then(function(result){
if(result == true){
count++;
}else;
});
}else;
});
console.log(count); //prints [object Promise]
我不是 javascript 专家,但我认为这可能与 return_of_function_A.then(function(result){ 有关 ...
【问题讨论】:
-
您的代码有问题。当您说
a.function_A应该返回真或假时,代码会将其视为一个承诺。它应该是一个确定为真或假的承诺吗?在这种情况下,您在count上有一个竞争条件。 -
您能否编辑您的问题,使其包含mcve?
-
@IvanRubinson 我刚刚更新,这是一个承诺
-
你在哪里使用
async/await?
标签: javascript asynchronous foreach async-await