我有以下功能:
function queryProposals(hash:string) {
let t = api?.query.backgroundCouncil.proposalOf(
hash,(data1:any)=>{
let data0 = data1.toPrimitive().args.account as InjectedAccountWithMeta;
let data = proposals;
if (data0 && !data.includes(data0)){
data.push(data0);
dispatch1({type:`SET_PROPOSALS`,payload:data});
//console.log(data)
return data
}
}
);
return t
}
注释的
console.log(data)
将返回预期的数据列表,但是,console.log(t)
始终只是返回:[Promise,Promise,Promise,...]
下面是我实际使用该函数并检查返回值的部分:
newl
我真的不知道该怎么办,我期望返回的变量
api.query.backgroundCouncil.proposals((hash: string[]) => {
if (hash.length > 0) {
let newl = hash.map((x) => queryProposals(x)?.then(list => list));
console.log(newl);
}
});
与返回的变量
t
相同。提前致谢
卡祖
。此函数可让您将 Promise 数组转换为 Promise 结果数组。
Promise.all
或者:
const someArrayOfPromises = [promise, otherPromise, otherPromise2];
const arrayOfPromiseResults = await Promise.all(someArrayOfPromises);