Ich entwickle eine Angular2-Komponente, die die Webcam verwendet, um ein Bild an einem Canvas-Element zu fangen und es als Blob
zu extrahieren. Die Blob
und das Ereignis funktionieren getrennt voneinander, aber wenn ich versuche, das Ereignis innerhalb der Rückruffunktion von toBlob
zu senden, wird das Ereignis für seine Listener nicht mehr ausgelöst.Angular2 EventEmitter löst kein Ereignis aus, wenn es in einem Callback ausgegeben wird
Dies funktioniert:
var self = this;
self.gotSnapshot.emit({}); //Raises the gotSnapshot event correctly.
this.canvas.toBlob(function(blob){
console.log(blob); //Logs the blob to console correctly.
});
Dies gilt nicht:
var self = this;
this.canvas.toBlob(function(blob){
self.gotSnapshot.emit(blob); //Event is never raised for listeners
});
Ich bin sicher, es ist, weil toBlob
asynchron ausgeführt wird. In Angular1 würde mein Instinkt sein, ein $ Timeout zu machen und mich anzumelden, aber ich dachte, dass wir für einen EventEmitter nicht mehr mit all dem fertig werden müssen?
Wer weiß, wie man das umgehen kann?
Wow, das war schnell! Vielen Dank, das war genau das, was ich brauchte. Ich denke, es ist Zeit, alles über dieses "Zone" -Ding zu lernen, von dem ich gehört habe. – Martaver