如何运行promise数组

在这个函数中,在内联数组完成之前调用callback函数。 我只能在内联具有所有的值时才能调用它?

function inlineSearch( search, callback ) { const inline = [] mal.quickSearch( search ).then( response => { response.anime.forEach( anime => { anime.fetch( ).then( json => { inline.push( replyInline( json ) ) }) }) .then( callback( inline ) ) } ) } 

response.anime是一个json对象数组,指向另一个json对象,这就是为什么我需要获取它,所以我可以有正确的json。

而且, replyInline是一个只接受json并返回另一个的函数。

mal =我的动漫列表API

使用带有Promise.all Array#map ,并且不需要inline Promise.all

如果你必须使用callback,那么以下应该工作

 function inlineSearch(search, callback) { mal.quickSearch( search ) .then(response => Promise.all(response.anime.map(anime => anime.fetch() .then(json => replyInline(json)) )) ) .then(results => callback(results)); } 

用法:

 inlineSearch("whatever", function(results) { // do whatever with results }); 

另外,没有callback上面可以这样写:

 function inlineSearch(search) { // note the return return mal.quickSearch( search ) .then(response => Promise.all(response.anime.map(anime => anime.fetch() .then(json => replyInline(json)) )) ); } 

用法:

 inlineSearch("whatever").then(results => { // do whatever with results });