我試圖使用lodash鏈來同步執行動作,但它似乎.tap()首先執行,我找不到一個正確的方法來做到這一點使用諾言。我雖然鏈lodash允許行動,以在同步的方式跟隨,是指自來水不會執行,直到結束的forEach使用lodash,點擊()的鏈首先執行
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>
沒有什麼異步這段代碼?你爲什麼提到承諾? – nem035
@ nem035你是什麼意思,我的意思是使用諾而不是鏈 – kyserslick
我不確定你的問題是什麼。你是說「tap」是先執行,你想知道爲什麼?或者你想重構這段代碼來使用承諾? –