我知道有关此主题的问题已经很多,但是我无法使(异步)代码正常工作,我真的可以使用一些帮助。
我有三个函数,每个函数都有一个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
语句)的函数可以。
答案 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
}