如何运行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 });