Помогите разобраться с Promise

112
28 сентября 2019, 02:30

Создать класс, который производит экземпляр со следующими свойствами: - promise - промис, который создается во время запуска конструктора; - reject - метод, при выполнении которого promise реджектится; - resolve - метод, при выполнении которого promise резолвится.

class Prom {...}
const inst = new Prom();
inst.promise.then(data => console.log(data));
inst.resolve('test'); 
→  test

я делаю такой код, но не могу понять логику выполнения.

class Prom {
    constructor () {
        this.promise = new Promise ((res,rej)=>{
            setTimeout(()=>{
                res('text')
            },100)
        })
    }
    resolve(value){
        return new Promise((res,rej)=>{
            setTimeout(()=>{
                res(value)
            })
        })
    }
}
const inst = new Prom();
inst.promise.then((data)=> console.log(data));
inst.resolve('text');
Answer 1

В конструктор Promise передается функция, которая принимает 2 параметра. Один из параметров переводит Promise в статус resolve. Второй - в статус reject.

Поэтому для решения всей задачи достаточно сохранить эти методы в поля класса и вызвать их в нужных методах:

class Prom { 
  constructor() { 
    this.promise = new Promise((res, rej) => { 
      this.res = res; 
      this.rej = rej; 
    }) 
  } 
  resolve(value) { 
    this.res(value); 
  } 
  reject(reason) { 
    this.rej(reason); 
  } 
} 
const inst = new Prom(); 
inst.promise.then((data) => console.log(data)); 
inst.resolve('text'); 
 
const inst2 = new Prom(); 
inst2.promise.then((data) => console.log(data), (reason) => console.log(`rejected with reason: ${reason}`)); 
inst2.reject('manual');

READ ALSO
innerHTML не изменяет данные

innerHTML не изменяет данные

Всем привет, есть вот такая диллема, и я не могу понять что здесь происходит:

97
Как можно реализовать закрытия сайта по кнопке

Как можно реализовать закрытия сайта по кнопке

Пробовал использовать метод windowclose(); но он работает не во всех браузерах и в консоли появляется строка: Scripts may close only the windows that were opened by it

118
Сортировка по двум колонкам в таблице

Сортировка по двум колонкам в таблице

Подскажите как можно реализовать такую сортировкуНет ни каких идей

116