Ich versuche, lodash Kette zu verwenden, um Aktionen synchron auszuführen, aber es scheint .tap() wird zuerst ausgeführt, und ich konnte einen richtigen Weg, um dies zu tun mit Versprechen. Ich obwohl Kette in lodash Aktionen in einem Sync-Weg folgen können, bedeutet Hahn wird nicht ausgeführt, bis forEach endetKette mit lodash, tap() wird zuerst ausgeführt
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>
Es gibt async nichts über diesen Code? Warum erwähnst du Versprechungen? – nem035
@ nem035 was meinst du, ich meinte Versprechen statt Kette – kyserslick
Ich bin mir nicht sicher, was Sie in Frage stellen. Willst du sagen, dass 'tap' zuerst ausgeführt wird und du wissen willst warum? Oder Sie möchten diesen Code umgestalten, um Versprechungen zu verwenden? –