预先检查api中的图像是否确实存在。我正在使用' q'作为我的承诺库和'请求' lib发出http请求。我尝试返回所有成功请求的图像的数组:
.then((data)=> {
return q.all(data.map((elem) => {
let deferred = q.defer()
request(`https://address/path/${elem}.jpg`, (error, response) => {
if (!error, response.statusCode === 200) {
deferred.resolve(elem)
}
})
return deferred.promise
})
)
})
.then((result)=> {
console.log('Array of existing images', result)//Result should contain all image id's which had status code 200
})
我希望这会返回请求状态为200的所有结果。使用q.all()
我希望在完成所有承诺后返回该函数。
答案 0 :(得分:0)
我认为,你应该添加一个链,清理非200个图像 例如,喜欢
.then((data)=> {
return q.all(data.map((elem) => {
let deferred = q.defer()
request(`https://address/path/${elem}.jpg`, (error, response) => {
if (!error) {
deferred.resolve({img:elem, status : response.statusCode})
}else{
deferred.reject({elem: 'error'})
}
});
return deferred.promise
})
)
})
.then((result)=> {
let onlyGoodImages = [];
result.map((elem) => {
if (elem.status == 200){
onlyGoodImages.push(elem.img);
}
});
return onlyGoodImages;
}
)
.then((result)=> {
console.log('Array of existing images', result)//Result should contain all image id's which had status code 200
})