Javascript 如何在返回值之前等待for循环中的承诺完成

Javascript 如何在返回值之前等待for循环中的承诺完成,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个for循环,在这个循环中,每次迭代都运行一个promise,如果promise被解析,则将promise的索引添加到数组中,最后,我希望输出结果数组。但是,函数会在完成for循环中的所有承诺之前不断返回数组。因此,我总是得到一个空的返回数组 我的代码如下所示: var str_list = [some strings]; let myFunction = () => { var array = []; for (i = 0; i < length; i++)

我有一个for循环,在这个循环中,每次迭代都运行一个promise,如果promise被解析,则将promise的索引添加到数组中,最后,我希望输出结果数组。但是,函数会在完成for循环中的所有承诺之前不断返回数组。因此,我总是得到一个空的返回数组

我的代码如下所示:

var str_list = [some strings];

let myFunction = () => {
    var array = [];
    for (i = 0; i < length; i++) {
        new Promise((resolve, reject) => {
            if (str_list[i] fulfills some conditions) {
                resolve();
            } else {
                reject(
                    throw new Error())
            }
        }).then(() => {
            array.push(i);
        }).catch((err) => {
            console.log(i, err);
        });
    }
    return array;
}
var str_list=[一些字符串];
让myFunction=()=>{
var数组=[];
对于(i=0;i{
如果(str_list[i]满足某些条件){
解决();
}否则{
拒绝(
抛出新错误()
}
}).然后(()=>{
阵列推送(i);
}).catch((错误)=>{
console.log(i,err);
});
}
返回数组;
}
在返回值之前,是否有一种等待for循环完成的好方法?

var str_list=[“…”];
让myFunction=async()=>
{
常量承诺=[];
对于(i=0;i
{
常量条件=/。。。
解析(条件?str_列表[i]:false);
}));
}
return(wait Promise.all(promises)).filter(f=>f!==false);

}
使用
Promise.all()
。回答您的问题,但请花些时间学习正确的代码格式标准。这将为你和你周围的人省去很多麻烦!哈哈,对不起。javascript的第二天。通常使用python,所以请原谅我所有糟糕的js格式!