首页 > 解决方案 > 异步函数的 JavaScript 问题

问题描述

我知道关于这个话题已经有很多问题了,但是我不能让我的(异步)代码工作,我真的可以使用一些帮助。

我有三个函数,每个函数都有一个 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()asyncshowInfo()await

标签: javascriptajaxasynchronousasync-await

解决方案


我发现了我的错误。和函数不包含承诺getMovies()。此外,这三个功能不需要. 但是,包含调用(带有语句)的函数确实如此。getActors()getGenres()asyncshowInfo()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
    }

推荐阅读