gpt4 book ai didi

javascript - 当 Meteor.method 内事件触发时返回值

转载 作者:行者123 更新时间:2023-12-03 02:19:42 24 4
gpt4 key购买 nike

我正在尝试使用 node-image-scraper 包从网页中抓取一些图像,然后将图像数组返回到 Meteor 中的客户端。但是,考虑到包的事件驱动性质,我目前不知道这将如何工作。

var imageScraper = new imagescraper();
var images;

Meteor.methods({
scrapeImgs(url){
imageScraper.on('image', (image) => {
images.push(image);
});

images = [];
imageScraper.address = url;
imageScraper.scrape();

imageScraper.on('end', () => {
return images; //does not work
});

return images; // returns an empty array
},
});

从事件中返回图像不起作用,在外部返回图像会返回一个空数组。有什么办法可以让这个工作吗?或者说,鉴于目前的情况,这根本不可能?如果我需要将全套图像返回给客户端,该怎么做?

最佳答案

只需返回一个 promise :

Meteor.methods({
scrapeImgs(url){
let images = []; // define vars
imageScraper.on('image', (image) => {
images.push(image);
});

imageScraper.address = url;
imageScraper.scrape();

return new Promise((resolve, reject) => {
imageScraper.on('end', () => {
resolve(images); // This will only trigger on end
// Check end really triggers when expected
// Don't use return on callbacks unless terminating explicitely
});
// Guessing it has an error event...
imageScraper.on('error', (err) => {
reject(new Meteor.Error(err));
// Reject with Meteor.Error since these are caught and sanitized
})
});
// returns an empty array as array was populated on event callback, not on current process loop.
},
});

根据您的前端调用,您可以直接访问该值或访问 .then(),只需在前端检查:)

关于javascript - 当 Meteor.method 内事件触发时返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49217434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com