Bas*_*ijk 38 javascript promise ionic2 angular
我正在使用Ionic平台的SQLStorage.remove函数返回一个promise.在我的代码中,我需要删除多个值.当这些都完成后,我需要执行一些代码.
我如何等待所有这些然后执行回调函数?
码:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
Run Code Online (Sandbox Code Playgroud)
嵌套所有是一个坏习惯,所以我正在寻找一个体面的解决方案:)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
Run Code Online (Sandbox Code Playgroud)
Gün*_*uer 61
您可以使用
removeAll() {
Promise.all([
this.storage.remove(key1),
this.storage.remove(key2),
this.storage.remove(key3),
]).then(value => doSomething());
Run Code Online (Sandbox Code Playgroud)
另请参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
Pan*_*kar 32
你可以使用Observable.forkJoin从rxjs提供的所有的数组observables/promises.这需要在执行操作之前完成.它类似于Angular 1 $q.all.
Observable.forkJoin([
this.storage.remove(key1),
this.storage.remove(key2),
this.storage.remove(key3)
])
.subscribe(t=> {
var firstResult = t[0];
var secondResult = t[1];
});
Run Code Online (Sandbox Code Playgroud)
小智 5
在rxjs版本> 6上,您可以执行以下操作:
import {forkJoin} from 'rxjs';
Run Code Online (Sandbox Code Playgroud)
并执行Observable.forkJoin以下操作:
forkJoin([
this.service1.get(),
this.service2.get()
]).subscribe(data => {
this.data1= data[0];
this.data2 = data[1];
Run Code Online (Sandbox Code Playgroud)