如何用foreach循环的结果异步调用函数
How to asynchronous call function with the result of foreach loop
我有一个函数可以遍历一组对象并根据某些参数构建一个对象。它应该 return 构建对象
它代表我将设置的组件的状态对象。但是,我想使用 Array.foreach
但我不知道如何在 foreach 循环完成后调用该函数。
函数看起来像这样:
buildStateObject= (someArray: Array) => {
let stateobject= {};
someArray.foreach(item => {
switch (item.Someparameter) {
case 1:
stateobject.someProp1= item.message;
break;
case 2:
stateobject.someProp2= item.message;
break;
// code omitted
}
});
return stateobject;
};
在我的组件中,我有类似这样的东西,但显然不起作用:
if(someJson.jsonArray)
this.setState(this.buildStateObject(someJson));
所以我正在寻找的是这样的东西:
Promise.all(buildStateObject).
then((theResultObjectMaybe)=>{this.setState(theResultObjectMaybe);})
我试图弄清楚这一点,但我做不到。我也不确定这是否是一个好的做法。
[编辑]
@PaulJanicki 感谢您指出错误。只有类型错误。但是,您指出的一个错误也在我的代码中导致 Unhandled promise rejection
,我认为这是因为 forEac
h 是异步的,结果尚未处理。
问题是类型错误 foreach
而不是正确的 forEach
您在 buildStateObject
函数中的 forEach 方法之外缺少 return 语句。另外 forEach
应该是驼峰式。
function buildStateObject(someArray) {
let stateobject = {};
someArray.forEach(item => {
switch (item.someparameter) {
case 1:
stateobject.someProp= item.message;
break;
case 2:
stateobject.someProp= item.message;
break;
// code omitted
}
});
return stateobject;
}
function setState(state) {
console.log(state);
}
var someJson = [{
message: 'first',
someparameter: 1
}, {
message: 'second',
someparameter: 2
}]
setState(buildStateObject(someJson))
还要考虑到 stateobject.someProp
将在每次循环执行时被覆盖,不确定这是否是预期的行为。
我有一个函数可以遍历一组对象并根据某些参数构建一个对象。它应该 return 构建对象
它代表我将设置的组件的状态对象。但是,我想使用 Array.foreach
但我不知道如何在 foreach 循环完成后调用该函数。
函数看起来像这样:
buildStateObject= (someArray: Array) => {
let stateobject= {};
someArray.foreach(item => {
switch (item.Someparameter) {
case 1:
stateobject.someProp1= item.message;
break;
case 2:
stateobject.someProp2= item.message;
break;
// code omitted
}
});
return stateobject;
};
在我的组件中,我有类似这样的东西,但显然不起作用:
if(someJson.jsonArray)
this.setState(this.buildStateObject(someJson));
所以我正在寻找的是这样的东西:
Promise.all(buildStateObject).
then((theResultObjectMaybe)=>{this.setState(theResultObjectMaybe);})
我试图弄清楚这一点,但我做不到。我也不确定这是否是一个好的做法。
[编辑]
@PaulJanicki 感谢您指出错误。只有类型错误。但是,您指出的一个错误也在我的代码中导致 Unhandled promise rejection
,我认为这是因为 forEac
h 是异步的,结果尚未处理。
问题是类型错误 foreach
而不是正确的 forEach
您在 buildStateObject
函数中的 forEach 方法之外缺少 return 语句。另外 forEach
应该是驼峰式。
function buildStateObject(someArray) {
let stateobject = {};
someArray.forEach(item => {
switch (item.someparameter) {
case 1:
stateobject.someProp= item.message;
break;
case 2:
stateobject.someProp= item.message;
break;
// code omitted
}
});
return stateobject;
}
function setState(state) {
console.log(state);
}
var someJson = [{
message: 'first',
someparameter: 1
}, {
message: 'second',
someparameter: 2
}]
setState(buildStateObject(someJson))
还要考虑到 stateobject.someProp
将在每次循环执行时被覆盖,不确定这是否是预期的行为。