nodejs / nodejs/node-addon-api
Wrapping Event in a C++ class so that every where you pass an event it works.
Đang mở
Chưa có ai nhận issue này.
never-stale
- Ngôn ngữ chính
- C++
- Star
- 2.4k
- Fork
- 499
- Merge trung bình
- 2 ngày 11 giờ
- Pull request đã merge (30 ngày)
- 2
Mô tả
in JavaScript I can do this
class MyEvent extends Event {
constructor(type, msg) {
super(type);
this.message = msg;
}
}
const target = new EventTarget();
const e = await new Promise(resolve => {
target.addEventListener('custom', resolve);
target.dispatchEvent(new MyEvent('custom', 'hello'));
});
assert.ok(e.message === 'hello');
Is it possible to have MyEvent be a C++ class?
In my current attempt, when I call target.dispatchEvent I get
node:internal/event_target:220
throw new ERR_INVALID_THIS('Event');
^
TypeError [ERR_INVALID_THIS]: Value of "this" must be of type Event
at get type [as type] (node:internal/event_target:220:13)
at EventTarget.dispatchEvent (node:internal/event_target:755:40)
I tried setting the prototype chain in C++ and this passes
assert.ok(new MyEvent('custom', 'hello') instanceof Event);
but of course it's not actually an Event, it's a non-event who's prototype chain contains Event which is what node is complaining about.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Đánh giá
Issue này chưa được đánh giá.