从对象 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();