Выражение сравнения внутри Promise всегда возвращает true - PullRequest
0 голосов
/ 26 октября 2018

Я узнаю об обещании в Javascript. Но когда я попытался написать несколько строк кода, у меня возникла эта проблема. Мое утверждение «если», которое я объявляю внутри Обещания, всегда возвращает true. Вот информация:

  • Среда: Chrome Dev Tools - Chrome Dev Tools - Chromium 64.0.3282.140
  • Код:

var status = false;
var promise = new Promise(function(resolve, reject) {
  if (status) {
    console.log("TRUE")
    resolve({
      value: 'true'
    });
  } else {
    console.log("FALSE");
    reject({
      value: 'false'
    });
  }
});
  • Ожидаемый результат: FALSE
  • Что произошло вместо: ИСТИНА
  • Обратите внимание : независимо от значения «status», выход всегда имеет значение true.
    Я действительно ищу объяснение моей проблемы здесь. Большое вам спасибо.

1 Ответ

0 голосов
/ 26 октября 2018

status - это предопределенная переменная в браузерах.

Когда вы присваиваете ему значение, оно преобразуется в строку.

false становится"false", что является истинным значением.

Вот почему вам следует избегать глобальных переменных.Конфликты с переменными других людей никогда не доставляют удовольствия.


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

(function() {

  var status = false;
  var promise = new Promise(function(resolve, reject) {
    if (status) {
      console.log("TRUE")
      resolve({
        value: 'true'
      });
    } else {
      console.log("FALSE");
      reject({
        value: 'false'
      });
    }
  });

}());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...