У меня есть быстрый вопрос. Я делаю видео-чат с peerjs, и я получаю ошибку, что функция не определена. Вот код:Как вызвать унаследованную функцию внутри функции обратного вызова
Главный конструктор Voip, который вызывается в другом файле, как
var voip = new Voip();
Это функция:
function Voip(options) {
var self = this;
options = options || {};
var allOptions = _.extend({
secure: true,
debug: 3
}, options);
this.peerjs = new Peer(allOptions);
Первая проблема здесь. Как я могу вызвать функцию otherCall внутри функции обратного вызова с прослушиванием события вызова. Функция otherCall находится внизу. Теперь это написано с помощью this.otherCall, но это не работает. Я просто хотел бы перейти к этой функции всякий раз, когда я получаю событие вызова и отвечаю на звонок.
this.peerjs.on('call', function(call){
call.answer(window.localStream);
this.otherCall(call);
});
}
И затем Voip расширен с наследованием EventEmitter. Могу ли я полностью избавиться от этой строки и сохранить такую же функциональность? Я вообще не использую EventEmitter, но был использован в коде, с которым я помогал.
Voip.prototype = _.extend(EventEmitter.prototype, {
И то же самое здесь, self.otherCall не работает. Каково решение?
callOther: function(receiverId) {
var self = this;
var call = self.peerjs.call(receiverId, window.localStream);
self.otherCall(call);
},
otherCall: function(call) {
if (window.existingCall) {
window.existingCall.close();
}
call.on('stream', function(stream){
$('iframe').putthecodein....(stream)
});
window.existingCall = call;
}
});
Надеюсь, что в моем вопросе был ясен. Если я суммирую, я хочу вызвать функцию otherCall один раз при прослушивании события вызова и второй раз в функции callOther. И для наследования EventEmitter мне интересно, могу ли я изменить код таким образом, что мне не нужна эта строка, и все еще работает.
В вашем событии 'call' ли ваша ошибка' otherCall' выдает ошибку? Тот же вопрос для функции 'callOther'. Пробовали ли вы регистрировать то, что '' это внутри события 'call', и что' self' находится внутри 'callOther'. Это может быть проблема с охватом. –
@TahirAhmed Да, 'otherCall' не может быть вызван в обоих случаях в этой строке. Кроме того, 'self' внутри' callOther' является объектом Voip, а событие 'this' внутри вызова не определено. – Prototype
Является ли ваша функция 'otherCall' определенной в объекте' Voip' или это просто глобальная функция? –