我试图构建一个简单的应用程序来构建img解析器,并开始使用库image-scraper(node-image-scraper)。并面临一个问题。问题是:如何获得对象的最终数组
scraper.scrape(function(image) {
images_list.push(image);
})
承诺-不起作用,我试图在函数的参数内部发送回叫,但它也没有给我结果。
最佳答案
如果您想要一个承诺,则可以承诺scraper#scrape()
。
var Scraper = require("image-scraper");
Scraper.prototype.scrapeAsync = function(ms) {
var ref = this; // same coding style as in existing methods.
var images = [];
return new Promise(function(resolve, reject) {
ref.on('image', (image) => { images.push(image) });
ref.on('end', () => { resolve(images) });
// ref.on('error', reject); // unfortunately image-scraper doesn't emit an 'error' event.
if(ms !== undefined) { // maybe timeout as substitute for error handler?
setTimeout(() = {
reject(`image-scraper timed out after ${ms} ms`);
}, ms);
}
ref.scrape();
});
}
未经测试
致电,例如:
const scraper = new Scraper('whatever');
scraper.scrapeAsync(30000).then((images) => {
// process the `images` array here.
});
修改图像抓取器源以发出“错误”事件而不是记录错误应该相当简单。您可能需要分别针对
page_error
(致命)和image-error
(非致命)的事件。提交请求请求似乎没有意义-最近的更新是2年前。
关于javascript - 图像抓取器nodeJS。如何将回调函数发送到结果数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42475006/