@raft88

Как вернуть результат функции(метода) с отсрочкой?

Всем привет!
Есть метод класса, например,

this.anybodyProperty = 0;

anybodyName() {
setTimeout(()=>this.anybodyProperty = 1, 1000);
return this.anybodyProperty;
}

как вернуть результат метода после того, как выполнится присваивание? если переношу команду return в сам setTimeout, то все равно нет ассинхронности и метод вернет undefined
  • Вопрос задан
  • 193 просмотра
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Странная задача, но это можно сделать так:
anybodyName() { 
  return new Promise(resolve => {
    setTimeout(() => {
      this.anybodyProperty = 1;
      resolve(this.anybodyProperty);
    }, 1000);
  });
}


Использовать так:
const someVar = this.anybodyName().then(result => {
  // do something when result be returned
});
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
class Test{
	constructor(){
  	this.anybodyProperty = 0;
  }
  anybodyName() {
    return new Promise(resolve => {
      setTimeout(() => {
      	this.anybodyProperty = 1;
        resolve(this.anybodyProperty);
      }, 1000);
    });  	
  }
}

!async function (){

	console.log(await (new Test().anybodyName()));

}()

https://jsfiddle.net/QW01_01/kwLyydfw/
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
razumkov2015
@razumkov2015
"Программист" https://vk.com/cgs_game
Попробуйте сделать сам вызов метода с задержкой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы