Подождите, пока обещание ответа - PullRequest
0 голосов
/ 16 мая 2018

Перед прочтением: извините за мой уровень английского.

var match = matchPromise != undefined ? matchPromise.then(ret_val =>
    {
        return ret_val;
    })
    : false;

    if (match) {
        //continue here after Promise response
    }

Мой вопрос, как ждать, прежде чем ввести в if?потому что каждый раз match == false, но match может быть true, если он ответит обещанием.

Надеюсь, вы понимаете мою проблему.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы ищете

(matchPromise != null
  ? matchPromise
  : Promise.resolve(false)
).then(match => {
    // continue here after Promise response
});

Обратите внимание, что вы не можете ничего ждать, не сделав свой код асинхронным.

0 голосов
/ 16 мая 2018

Вы можете заключить возможное обещание в Promise.resolve и использовать .then на нем

Promise.resolve(matchPromise).then(
  match=>{
    if(match){...
  }
)

Чтобы уточнить: вы не можете прочитать обещание синхронно, ваши единственные варианты для обещания - использовать .then или async/await. Есть способ превратить синхронное значение (в вашем случае undefined) в обещание с Promise.resolve (в вашем случае обещание неопределено).

Так что теперь уже не имеет значения, является ли matchPromise обещанием или нет, потому что вы убедитесь, что оно выполнено, а затем обработаете его в .then, который либо даст вам разрешенное значение, либо значение undefined, либо путь; результат оператора if тот же.

...