【发布时间】:2021-02-23 13:56:43
【问题描述】:
您好,我尝试使用 for 循环数据并向肥皂 api 发送请求。问题是我的程序似乎没有等待从soap请求中获取请求
这是我的示例数据
data = [
{
store: "store1",
product: "product2",
},
{
store: "store2",
product: "product3",
}
]
exports.thisIsFunc = async (req, res, next) => {
Promise.all(data).then(result => {
for (let item of result) {
i++
console.log(i)
args.CustomerCode = item.store
args.ItemNo = item.product
const getApi = apiSend()
}
});
}
export function apiSend() {
return new Promise ((resolve, reject) => {
soap.createClient(url, (err, client) => {
client.getDataFromAPI(args, (err, result) => {
console.log(result)
return result
})
});
});
}
如你所见,我尝试在 sendApi 函数中使用新的 Promise,但有时它会停止出现错误 TypeError:无法读取未定义的属性“getDataFromAPI”
有时它会从 api 返回响应。我没有使用异步的原因,在soap中等待是因为我尝试将soap函数更改为异步函数但它不起作用。
【问题讨论】:
-
这段代码的各种问题。您的错误处理为零(忽略
createClient或getDataFromAPI()中的错误)。你不会在你的 promise 包装器中调用resolve()或reject(),这样 promise 永远不会解决或拒绝。当您调用apiSend()时,您不会对它返回的承诺做任何事情。那么,您对Promise.all(data)的使用是不合适的。Promise.all()仅在您向其传递一组 Promise 而非静态数据时才会做一些有用的事情。
标签: node.js soap async-await promise es6-promise