Ist dieser CodeIst Promise.all ([]) entspricht promise.then(). Dann()
Promise.all([
promise1,
promise2,
])
.then(() => doSomething())
entspricht
promise1
.then(() => promise2)
.then(() => doSomething())
ich dachte, sie waren gleichwertig, aber sie tun Verhalten in einer Glücksspiel- und Mokka-Anwendung nicht. Im Folgenden finden Sie weitere Informationen zu dieser Anwendung
ich fortune.js bin mit, und ich möchte einige Tests Mokka mit schreiben. Was ich versuche zu erreichen, ist die Verwendung des beforeEach
Hooks, um Tabellen in der Datenbank abzuschneiden und dann einige vordefinierte Werte einzufügen. Also, wenn ich zwei Tabellen namens customer
und user
werde ich etwas tun, wie diese
beforeEach(function() {
return Promise.all([store.delete('user'), store.delete('customer')])
.then(() => store.create('customer', {
id: '0987654321234567890',
// More data
}))
.then(() => store.create('user', {
id: 'qwertyuioppoiuytrewq',
customer: '0987654321234567890',
// More data
}));
});
Dieser Code ist nicht stabil und funktioniert manchmal und manchmal nicht ohne die ich finden kann, warum (rund 50% Erfolgsquote)
aber wenn ich auf diesen Code schalten es funktioniert:
beforeEach(function() {
return store.delete('customer')
.then(() => store.delete('user'))
.then(() => store.create('customer', {
id: '0987654321234567890',
// More data
}))
.then(() => store.create('user', {
id: 'qwertyuioppoiuytrewq',
customer: '0987654321234567890',
// More data
}));
});
ich dachte, dass
Promise.all([
promise1,
promise2,
])
.then(() => doSomething())
entsprach
promise1
.then(() => promise2)
.then(() => doSomething())
Seit store.delete kehrt ein Versprechen, warum ich ein anderes Verhalten haben Sie?
Brillant! Die Reihenfolge ist nicht das Problem, aber das Problem ist, dass ich versuche, auf die Datenbank zweimal gleichzeitig zuzugreifen – ThomasThiebaud
Dafür ist all() gedacht. Sie können jedes() oder map() und andere verwenden, um Versprechen in der richtigen Reihenfolge zu lösen. – marekful
Vielen Dank, ich werde es tun;) – ThomasThiebaud