从对象 Javascript 的方法获取 eventemitter 消息
Get eventemitter messages from method of object Javascript
我想从此对象方法获取循环的所有进度和更新。我已经使用 eventEmitter
发出消息,然后使用 .on
捕获该信号,如下所示:
let response= site_ob.getAllProducts();
response.on(('gotit'),(data)=>{
console.log("data");
});
但它显示 response.on 不是函数。
下面是一个class的方法:
async getAllProducts(){
const eventEmitter=new EventEmitter();
let ended=false,products_array = [],count=0,promises_array = [];
let total_products_num=this.getTotalProductNumbers();
for(let i=0;i<=150;i+=50) {
let products_data= await this.getProducts(i, 50);
products_array.push(products_data);
eventEmitter.emit('gotit', products_data);
}
return products_array;
}
或者我可以使用管道或流来执行此操作吗?
您需要 class 扩展 eventemitter,然后在 getAllProducts 中调用 this.emit()。因为它代表你调用数组上的 on 函数作为你的 return 你的 products_array
class MyProductClass extends EventEmitter {
constructor() {
super();
}
async getAllProducts(){
let ended=false,products_array = [],count=0,promises_array = [];
let total_products_num=this.getTotalProductNumbers();
for(let i=0;i<=150;i+=50) {
let products_data = await this.getProducts(i, 50);
products_array.push(products_data);
}
this.emit('gotit', products_data);
}
}
然后这样称呼它
let response;
site_ob.on( 'gotit', ( data ) => {
response = data;
console.log(response);
}
site_ob.getAllProducts();
我想从此对象方法获取循环的所有进度和更新。我已经使用 eventEmitter
发出消息,然后使用 .on
捕获该信号,如下所示:
let response= site_ob.getAllProducts();
response.on(('gotit'),(data)=>{
console.log("data");
});
但它显示 response.on 不是函数。
下面是一个class的方法:
async getAllProducts(){
const eventEmitter=new EventEmitter();
let ended=false,products_array = [],count=0,promises_array = [];
let total_products_num=this.getTotalProductNumbers();
for(let i=0;i<=150;i+=50) {
let products_data= await this.getProducts(i, 50);
products_array.push(products_data);
eventEmitter.emit('gotit', products_data);
}
return products_array;
}
或者我可以使用管道或流来执行此操作吗?
您需要 class 扩展 eventemitter,然后在 getAllProducts 中调用 this.emit()。因为它代表你调用数组上的 on 函数作为你的 return 你的 products_array
class MyProductClass extends EventEmitter {
constructor() {
super();
}
async getAllProducts(){
let ended=false,products_array = [],count=0,promises_array = [];
let total_products_num=this.getTotalProductNumbers();
for(let i=0;i<=150;i+=50) {
let products_data = await this.getProducts(i, 50);
products_array.push(products_data);
}
this.emit('gotit', products_data);
}
}
然后这样称呼它
let response;
site_ob.on( 'gotit', ( data ) => {
response = data;
console.log(response);
}
site_ob.getAllProducts();