ОК, так что я не очень хорошо знаком с Polymer 3, но я хорошо разбираюсь в Polymer 1 и 2.
Я получаю, что вы хотите сделать это:
Получите обещание ajax.
Верните указанное обещание ajax, как только определенное состояние изменилось.
сделайте выборкувызовите, если указанное обещание не было выполнено.
Вам нужно сохранить это обещание как переменную, а затем просто связать его вместе с другими вызовами методов.Комментарии ниже объясняют больше о том, что я делаю с вашим примером кода из OP.
class myClass extends ... {
render() {
...
this.fetch();
....
}
fetch(){
this.set('savedPromise', Promise.all([ // save promise to variable
....,
....,
....
])
// not needed
/* .then( () => {
// new Promise or somthing like that
// wait for state changed to resolve it
}*/
).then(
// do something
return result // added this line
)
}
stateChanged(state){
if(condition){
if (this.savedPromise) {
this.savedPromise.then(function(response) {
// handle data
});
else {
fetch().then(function(response) { // if set before render(), do a fetch call.
// handle data
}
}
}
}
}