异步函数的JavaScript问题

时间:2020-09-14 13:21:10

标签: javascript ajax asynchronous async-await

我知道有关此主题的问题已经很多,但是我无法使(异步)代码正常工作,我真的可以使用一些帮助。

我有三个函数,每个函数都有一个AJAX调用。这三个函数最终都会返回一个数组。当三个数组最终完成时,我想调用另一个函数showInfo(),该函数具有三个先前收到的数组作为参数。

我怎么了?

showInfo(await getMovies(), await getActors(), await getGenres());

async function getMovies() {
    //Ajax request which eventually returns a 'movie' array
}

async function getActors() {
    //Ajax request which eventually returns an 'actor' array
}

async function getGenres() {
    //Ajax request which eventually returns a 'genre' array
}

function showInfo(movies, actors, genres){
    //process data
}

更新:

我发现了我的错误。 getMovies()getActors()getGenres()函数不包含promise。另外,这三个功能不需要async。但是,包含showInfo()调用(带有await语句)的函数可以。

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。 getMovies()getActors()getGenres()函数不包含promise。另外,这三个功能不需要async。但是,包含showInfo()调用(带有await语句)的函数可以。

现在是这样的:

    doEverything();

    async function doEverything() {
        var movies = await getMovies();
        var actors = await getActors();
        var genres = await getGenres();
        showInfo(movies, actors, genres);
    }

    function getMovies() {
        return new Promise(resolve => {
            //Ajax request which eventually returns a 'movies' array
        });
    }

    function getActors() {
        return new Promise(resolve => {
            //Ajax request which eventually returns an 'actor' array
        });
    }

    function getGenres() {
        return new Promise(resolve => {
            //Ajax request which eventually returns a 'genres' array
        });
    }

    function showInfo(movies, actors, genres) {
        //process data
    }