gpt4 book ai didi

javascript - 作出 promise 等待另一个 promise

转载 作者:行者123 更新时间:2023-12-01 01:50:44 25 4
gpt4 key购买 nike

在 node.js 应用程序中,我尝试从 API 查找产品列表,然后仅获取第一项的缩略图。

在我的代码中,getOrderDetails 是一个 promise ,然后如果它是第一个产品,它会调用函数 getImage,这也是一个 promise 。

但是,当我运行代码时,会在没有缩略图的情况下填充 orderDetails - 因此看起来代码并未等待 getImage 函数解析。

请有人解释一下我做错了什么吗?

提前谢谢您!

if (siteConfig.storeIntegration == 'Cart') {

getOrderDetails(restPathOrder)
.then(function(res) {

var orderDetails = '';

for (i = 0; i < res.items.length; i++) {

productId = res.items[i]['productId'];

thumbnail = '';

if (i == 0) {

getImage(productId, restApiKey)
.then(function(res) {

thumbnail = res;

console.log('thumbnail:' + res);
})
}

orderDetails = orderDetails + res.items[i]['quantity'] + ',' + res.items[i]['name'] + ',' + productUrl + ',' + thumbnail;

}

console.log(orderDetails);

})


}

function getOrderDetails(restPath) {

return new Promise((resolve, reject) => {

request(restPath, function (error, response, body) {

if (!error && response.statusCode == 200) {

restData = JSON.parse(body);

resolve(restData)
}
})
})


}

function getImage(productId, restApiKey) {

return new Promise((resolve, reject) => {

var restPathProduct = storeURL + restApiKey + productId;

request(restPathProduct, function (error, response, body) {

if (!error && response.statusCode == 200) {

restData = JSON.parse(body);

thumbnail = restData.image[0];

resolve(thumbnail);
}
})
})

}

最佳答案

我可以建议使用新的 await语法?

async main() {
if (siteConfig.storeIntegration == 'Cart') {
let res = await getOrderDetails(restPathOrder);

var orderDetails = '';

for (i = 0; i < res.items.length; i++) {

productId = res.items[i]['productId'];

let thumbnail = '';

if (i == 0) {
thumbnail = await getImage(productId, restApiKey);
}

orderDetails += res.items[i]['quantity'] + ',' + res.items[i]['name'] + ',' + productUrl + ',' + thumbnail;
}
console.log(orderDetails);
}
}

关于javascript - 作出 promise 等待另一个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51570236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com