J'essaie d'utiliser la chaîne lodash pour exécuter des actions de manière synchrone, mais il semble que .tap() soit exécuté en premier, et je n'ai pas trouvé de moyen approprié de le faire en utilisant la promesse. Je croyais que la chaîne en lodash permet de suivre les actions d'une manière synchronisation, signifie robinet ne sera pas exécuté jusqu'à la fin de forEachChaîne utilisant lodash, tap() est exécuté en premier
const ids = [
{
"id": 1,
"refs": [
{
"skuId": 693194,
"sizeId": "12M",
"colorId": "ROSE"
},
{
"skuId": 693195,
"sizeId": "14M",
"colorId": "ROSE"
},
{
"skuId": 973804,
"sizeId": "6M",
"colorId": "GREEN"
}
]
},
{
"id": 2,
"refs": [
{
"skuId": 693174,
"sizeId": "13M",
"colorId": "RED"
},
{
"skuId": 693995,
"sizeId": "14M",
"colorId": "BLUS"
}
]
}
]
let id = 1
_(ids)
.chain()
.map(value => {
id = _.result(_.find(value.refs, function(sku) {
return sku.colorId === 'ROSE' &&
sku.sizeId === '14M';
}), 'skuId');
})
.tap(() => console.log('id: ', id))
.value()
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
Il n'y a rien async sur ce code? Pourquoi mentionnez-vous des promesses? – nem035
@ nem035 que voulez-vous dire, je voulais dire utiliser la promesse au lieu de la chaîne – kyserslick
Je ne suis pas sûr de ce que vous questionnez. Êtes-vous en train de dire que 'tap' est d'abord exécuté et que vous voulez savoir pourquoi? Ou vous voulez refactoriser ce code pour utiliser les promesses? –