помогите с проммисом

166
10 августа 2018, 15:00

код функции qw менять нельзя можно менять только колбек

var qw = (func)=> {
    var val = 123;
    if (func(val) === false ) {
        console.log('good');
    }
    else {
        console.log('bad');
    }
}
qw((val)=> {
    // типа бекенд который сравниват значение val и val2
    setTimeout(()=> {
        var val2 = 123;
        if (val == val2) {
            var result =  'результат сравнения';
        }
    },500)
    return false // как сюда вернуть результат сравнения 
})
Answer 1

Ближайшее, что можно предложить - использовать механизм async/await.
Он позволяет писать асинхронный код, как синхронный(за исключением маркеров async/await)

const qwLikeSync = async function (f) {  
  // Мы всё ещё пишем return, но возврат произойдёт в виде резольва промиса 
  return await f(123) ? 'bad' : 'good'; 
}; 
const qwAsync = f => f(123).then(res => res ? 'bad' : 'good'); 
 
const func = num => val => new Promise(ok => setTimeout(() => ok(val === num))); 
 
const badFunc = func(123); 
const goodFunc = func(321); 
 
qwAsync(badFunc) 
  .then(res => console.log('abad', res)); 
qwAsync(goodFunc) 
  .then(res => console.log('agood', res)); 
 
qwLikeSync(badFunc) 
  .then(res => console.log('sbad', res)); 
qwLikeSync(goodFunc) 
  .then(res => console.log('sgood', res)); 
 
// Аналогично можно завернуть и вызов такой функции 
(async function() { 
  let res = await qwLikeSync(goodFunc); 
  console.log(res); 
})()

READ ALSO
Как сделать, чтобы ячейки одного цвета не встречались вместе слева направо?

Как сделать, чтобы ячейки одного цвета не встречались вместе слева направо?

Надо сделать так, чтобы ячейки одного цвета не встречались вместе слева направо

180
Bundle не работает как статический сайт

Bundle не работает как статический сайт

При запуске React приложения через открытие indexhtml - белый экран

151
Как очистить и удалить блок на чистом javascript?

Как очистить и удалить блок на чистом javascript?

Я сделал форму отправки, но в ней есть две строки на jqueryНе могу переделать, помогите

153