请查看我的代码,我无法找到代码中的错误。
async makeSale({request,response,auth,params})
{
const data=request.body.data
var total=0
_.forEach(data,(v)=>{
total+=(v.productQuantity*v.productPrice)
})
const saleData={seller_id:1, buyer_id:params.id,totalAmount:total}
const [sale,config] = await Promise.all(this.createSale(saleData),this.getsConfig())
}
这些是两种方法
createSale(s)
{
console.log('One: '+new Date().getTime())
const d=Sale.create(s)
console.log(d) // this echo promise pending
return d
}
getsConfig()
{
console.log('two: '+new Date().getTime())
const c=Config.all()
console.log(c) // this echo promise pending
return c
}
,控制台中的结果是
One: 1521967277914
Promise { <pending> }
two: 1521967277916
Promise { <pending> }
,错误是
"undefined is not a function", name: "TypeError", status: 500
感谢您的时间。
答案 0 :(得分:2)
我认为问题在于this.createSale(saleData).interate不是函数。
根据MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)
Promise.all接受&#34;可迭代&#34;作为参数,iterable可以是Array或String。
你的结果:
One: 1521967277914
Promise { <pending> }
显示了函数d:createSale()是一个Promise但可以互动(String或数组)。
createSale(s)
{
console.log('One: '+new Date().getTime())
const d=Sale.create(s)
console.log(d) // this echo promise pending
return d
}
所以,也许您可以尝试以下代码:
await Promise.all([this.createSale(saleData),this.getsConfig()])
答案 1 :(得分:-1)
这是因为Promise.all正在等待createSale和getsConfig被解决而且它们不是承诺所以只需为它们创建一个承诺,如下所示
createSale(s)
{
return new Promise(function(resolve, reject) {
console.log('One: '+new Date().getTime())
const d=Sale.create(s)
console.log(d) // this echo promise pending
resolve(d)
});
}
并为getsConfig做同样的事情