我正在開發一個匯入器,對于每個類別,我必須創建類別及其大小,例如在此輸入 JSON 中:
const input_json = {
"categories": [
{
"title": "category title",
"sizes": [
{
"title": "size title",
"slices": 8,
"flavors": 4,
},
{
"id" : "",
"title": "size title 2",
"slices": 8,
"flavors": 4,
}
]
}
]
}
但問題是尺寸需要知道類別 id,所以我試圖這樣做:
const prepareCategories = (body) => {
let category_promises = []
for (let i = 0; i < body.categories.length; i ) {
const categoryBody = body.categories[i]
let object_category = {
......
} // set the object
categoryPromise = nmCategorySvcV2.create(object_category)
categoryPromise.size = categoryBody.sizes
category_promises.push(
categoryPromise,
)
}
return category_promises
}
......
let category_promises = prepareCategories(input_json) // passing the input
Promise.all(category_promises).then((categories) => {
console.log(categories)
})
但是當我看到 Promise.all 的結果時,sizes 屬性沒有顯示,只有實際創建的類別的屬性。
我究竟做錯了什么?
uj5u.com熱心網友回復:
您正在設定size的承諾(這沒有任何意義)。相反,您需要等待承諾得到解決,然后在其結果上設定大小:
const categoryPromise = nmCategorySvcV2.create(object_category)
.then(result => Object.assign(result, { size: categoryBody.sizes }))
(順便說一下,您缺少 . 的宣告categoryPromise。)
使用await語法可以使代碼變得更清晰:
const prepareCategories = body => body.categories.map(async categoryBody => {
const object_category = {
//......
} // set the object
const categoryData = await nmCategorySvcV2.create(object_category)
categoryData.size = categoryBody.sizes
return categoryData
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/355152.html
標籤:javascript 节点.js 承诺
