Помогите справиться со следующей проблемой: Есть класс метод которого Initialize() вызывает Promise функцию результат которой я хочу записать в атрибуты класса
module.exports = class MyPokedex {
constructor() {
const Pokedex = require('pokedex-promise-v2');
this._P = new Pokedex();
this.total = 0; // How many total pokemons
this.names = []; // Name
this.promiseResolved = false;
}
async Initialize() {
let interval = {
limit: 1,
offset: 0
}
const self = this;
self.promiseResolved = false;
// Пытаюсь сделать await но эффекта нет ...
await this._P.getPokemonsList(interval)
.then( function(response) {
self.total = response.count;
for(let line of response.results)
self.names.push(line.name);
self.promiseResolved = true;
}, (err) => console.log("Промис выполнен с ошибкой", err));
console.log('finished');
console.log('this.total', this.total);
console.log('this.names', this.names.length);
console.log('this.promiseResolved', this.promiseResolved);
}
}
// *** pdemo.js ***************************************
const MyPokedex = require('./pclass');
let myP = new MyPokedex();
console.log(myP.promiseResolved);
console.log('Main Initialize');
myP.Initialize();
console.log('Main Initialize finished');
// while (!myP.promiseResolved)
console.log(myP.promiseResolved);
console.log(myP.total);
При выполнении node pdemo в консоли вижу следующее:
C:\nodejs\MyPrj\mobx-master>node pdemo
false
Main Initialize
Main Initialize finished
false
0
finished
this.total 964
this.names 2
this.promiseResolved true
Получается что-то странное ?! Вроде бы await срабатывает, но почему тогда внутри pdemo.js значения атрибутов 0 и false (не инициализированы) ?
myP.Initialize().then(() => { console.log('Main Initialize finished'); })и уже внутри then обращаться к атрибутам – andreymal Feb 13 '20 at 13:40