JS. Ожидание выполнения функции

156
08 августа 2018, 18:20

Только начал изучать JavaScript, требуется Ваша помощь:

describe('Test Suite #1', function(){
    it('Check URL Errors', function()
    {   
        assert.equal(checkStatusCode(URL), true);
    });
});

Проблема с assert.equal(...), суть в том, что сравнение выполняется до того как закончит выполняться функция. Вопрос как обойти этом момент? Как вообще решаются подобные моменты, когда мне нужно получить результат функции, а потом уже с ним совершать какие-либо действия? Нужны ли для этого promiseили есть другие варианты?

Спасибо!

@vp_arth, а не подскажете на примере, как из этого сделать nodejs-style функцию с callback ?

function checkStatusCode(url, cb){
  if (url == 'right url'){
      cb(null, true);
  }
  else{cb(null, false);}
}
Answer 1

Асинхронные тесты в mocha пишутся довольно просто:

describe('Test Suite #1', function(){
  it('Check URL Errors (promise-style function)', function(done) {   
     checkStatusCode(URL)
       .then(function(res) {
         assert.equal(res, true);
         done();  
       });
  });
  it('Check URL Errors (nodejs-callback style function)', function(done) {   
     checkStatusCode(URL, function(err, res) {
       if (err) done(err);
       assert.true(res);
       done();  
     });
  });
});
READ ALSO
JavaScript. Парсинг даты не работает в Safari

JavaScript. Парсинг даты не работает в Safari

Столкнулся с проблемой в элементарном, на первый взгляд, скриптеДату получаю из JSON, поэтому в примере просто показываю строку, в виде которой...

203
Как добавить свой пин в yandex map?

Как добавить свой пин в yandex map?

Никак не могу добавить свой пин в карту, дефолтные норм отображаются

218
Three.js + glTFLoader

Three.js + glTFLoader

Не понимаю что происходит в gltf лоадереПри загрузке стабильно выдает ~30(+/- 10шт) ошибок

198
Событие при resize окна

Событие при resize окна

Ребят уже битый час бьюсь, что не так со скриптом ? Собственно при разрешении меньше 992px окна браузера, должно отрабатывать событиеПо клику...

158