Ваши обещания p1
и p2
не имеют никакого разрешенного значения, потому что обработчики .then()
присваивают result
this.s
и this.p
, но они ничего не возвращают, поэтому разрешенные значения для p1
и p2
являются undefined
. Помните, что возвращаемое значение из обработчика .then()
становится разрешенным значением обещания.
Таким образом, когда вы делаете это:
Promise.all([p1, p2]).then(values => {
console.log(values); ///undefined
});
Все values
будет массивом undefined
. Если вместо этого вы делаете это:
Promise.all([p1, p2]).then(values => {
console.log(this.p, this.s);
});
вы должны увидеть ваши ценности. Или же вы можете вернуть эти значения из обработчиков .then()
, и тогда каждое обещание будет иметь разрешенное значение.
init() {
let p1 =this.dataService.get_s().then((result) => {
this.s = result;
return result; // set resolved value of promise
});
let p2 = this.dataService.get_p().then((result) => {
this.p = result;
return result; // set resolved value of promise
});
Promise.all([p1, p2]).then(values => {
console.log(values); // will show the resolved values now
});