Задать вопрос
@HeBonpoc

Как в JS отследить выполнение 2х событий?

Подскажите? пожалуйста, как в JS выполнить какой-то код, если только 2 события произойдут. Мне надо сделать определённую штуку когда инициализируется виджет и когда придут данные с другого сайта. Я могу написать addEventListener для 2х событий по отдельности, но не для 2х сразу. Если я сделаю addEventListener для 2го, в обработчике 1го, то это тоже не подойдёт, потому что я не знаю какое событие произойдёт раньше.
  • Вопрос задан
  • 2482 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
cha-cha
@cha-cha
var x = false;

function a(){
    if(x){
        //do stuff
    }
    else{
        x = true;
    }
}

function b(){
    if(x){
        //do stuff
    }
    else{
        x = true;
    }
}
Ответ написан
Комментировать
Scorpi
@Scorpi
https://github.com/caolan/async
async.parallel([
    function(callback){
        // Инициализируем виджет
        callback(null, 'one');
    },
    function(callback){
        // Получаем данные
        callback(null, 'two');
    }
],
// Вызовется когда оба действия будут выполнены
function(err, results){
   // Делаем что нибудь
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
В голову приходит только говнокод :) сделать глобальную переменную "состояние", в callback`ах этих событий ее инкрементить и вызывать некий метод. А этом методе - выполнять код только если глобальный флаг не меньше двух. Как-то так:
var globalState = 0;
function onEvent1() {
    ++globalState;
    myMethod();
}
function onEvent2() {
    ++globalState;
    myMethod();
}
function myMethod() {
    if (globalState < 2) {
        return;
    }
    // тут главная логика...
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы