Вернуть значение testValue после вызова - PullRequest
0 голосов
/ 02 октября 2019

Я изучаю некоторые асинхронные основы и функции обратного вызова в Javascript, и я хочу вернуть случайное логическое значение после случайной задержки. У меня есть функция, которая при вызове возвращает обратный вызов, но я не понимаю, как просто вернуть testValueиз обратного вызова после разрешения setTimeout.

const returnTestValue = () => {
  const delay = 7000 + Math.random() * 7000;
  const testValue = Math.random() > 0.5;

  return callback => {
    window.setTimeout(() => callback(testValue), delay);
  };
};

Возвращенный обратный вызов после вызова returnTestValue()

callback => {
  window.setTimeout(() => callback(testValue), delay);
}

1 Ответ

0 голосов
/ 02 октября 2019

Вы можете вернуть Обещание, которое разрешится с вашим случайным логическим значением после вашей случайной задержки следующим образом:

const returnTestValue = () => {
  return new Promise(function(resolve) { 
    const delay = 7000 + Math.random() * 7000;
    const testValue = Math.random() > 0.5;
    setTimeout(() => resolve(testValue), delay);
  });
};

и с помощью .then обработать результат следующим образом: returnTestValue().then(testValue => console.log(testValue));

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