如何在执行其他代码之前等待循环?

时间:2020-04-25 03:13:05

标签: javascript async-await

我想让我的代码在执行之前可以等待循环。说我有这样的代码:

static getData(num){
    return fetch('https://somedomain.me/${i}')
        .then(resolve => {
            return.resolve.json()
        })
        .then(resolveJson => {
            if(resolveJson.status == 'ok'){
                return Promise.resolve(resolveJson.data);
            } else{
                return Promise.reject('Something Error')
            }
        })
        .catch(error => {return Promise.reject(error)});

}
static async myFunction(){
    const a = [1, 2, 3, 4, 5];
    const content = []
    for(let i in a){
        try{
            const myData = await this.getData(i);
            content.push(myData);
        }catch(error){
            console.log(error);
        }

    }
    console.log(content);

}

但是即使我使用console.log(content),也首先执行async-await。因此,我无法从fetch获取数据。 myCode出了什么问题?

编辑:return Promise.resolve(resolveJson)return Promise.reject('Something Error')return Promise.reject(resolveJson)。和try-catch

1 个答案:

答案 0 :(得分:0)

也尝试将fetch与异步/等待一起使用:

static async getData(num){
    const result = await fetch('https://somedomain.me/${i}')
    const {data, status} = await result.json()
    if (status === 'ok') {
        return data
    }

    throw new Error('Something error')
}
static async myFunction(){
    const a = [1, 2, 3, 4, 5];
    const content = []
    for(const i of a) {
        const myData = await this.getData(i);
        content.push(myData);
    }
    console.log(content);

}