나는 그들이 동등라고 생각인가 Promise.all ([]) 상당
promise1
.then(() => promise2)
.then(() => doSomething())
에
Promise.all([
promise1,
promise2,
])
.then(() => doSomething())
해당하는이 코드) (다음.) (promise.then,하지만 그들은 할 fortunejs 및 mocha 응용 프로그램에서 동일하게 작동하지 않습니다. 내가 fortune.js을 사용하고 있는데 나는 모카를 사용하여 몇 가지 테스트를 작성하고 싶습니다
다음은이 응용 프로그램에 대한 자세한 내용입니다. 달성하기 위해 노력하고있어 beforeEach
후크를 사용하여 데이터베이스의 테이블을 자르고 미리 정의 된 값을 삽입하십시오. 내가 customer
및 user
라는 두 개의 테이블이있는 경우 그래서이 코드가 안정되지 않고 찾을 수 있습니다 I 않고 때로는 때로는하지 작동이
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
}));
});
같은 일을 할 이유 (약 50 % 성공률)
이 코드로 전환 할 경우 노력하고 있습니다 :
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
}));
});
내가 생각하는
Promise.all([
promise1,
promise2,
])
.then(() => doSomething())
,536,913 나는 다른 동작을 왜
는 store.delete 반환 약속 때문에
promise1
.then(() => promise2)
.then(() => doSomething())
에 해당했다?
브릴 런트! 순서는 문제가 아니지만 문제는 데이터베이스에 동시에 두 번 액세스하려고 시도하는 것입니다. – ThomasThiebaud
이것이 all()이 설계 한 것입니다. 각() 또는 map() 및 기타를 사용하여 약속을 순서대로 해결할 수 있습니다. – marekful
고마워, 내가 그것을 할;) – ThomasThiebaud