Javascript 结束:主题外,缺少返回
我有一个问题: 当我使用:Javascript 结束:主题外,缺少返回,javascript,node.js,promise,async-await,Javascript,Node.js,Promise,Async Await,我有一个问题: 当我使用: async function createElement(req,res){ const time1 = new Date().getTime(); console.log("turn on time 1 ",time1) await new Promise((resolve) => setTimeout(resolve,1000)); await new Promise((resolve) => setTimeout(resolv
async function createElement(req,res){
const time1 = new Date().getTime();
console.log("turn on time 1 ",time1)
await new Promise((resolve) => setTimeout(resolve,1000));
await new Promise((resolve) => setTimeout(resolve,1000));
const time2 = new Date().getTime();
console.log("turn on time 2 ",time2)
console.log('result : ', time2 - time1);
}
结果是:
turn on time 1 1531957505408
turn on time 2 1531957507413
result : 2005
很好,但当我尝试使用承诺时,一切都在等待
async function createElement(req,res){
let fn1 = () => {
new Promise((resolve) => {
setTimeout(() => {
console.log("message from fn1")
resolve()
},1000)
});
}
let fn2 = () => {
new Promise((resolve) => {
setTimeout(() => {
console.log("message from fn2")
resolve()
},1000)
});
}
const time1 = new Date().getTime();
console.log("turn on time 1 ",time1)
let responses = await Promise.all([fn1(),fn2()])
console.log("waiting for responses")
const time2 = new Date().getTime();
console.log("turn on time 2 ",time2)
console.log('result : ', time2 - time1);
}
结果是:
turn on time 1 1531957505408
turn on time 2 1531957505408
result 0
message from fn1
message from fn2
所以。。。如果我需要将结果发送到fn1或/和fn2以进行其他操作,我如何才能等待对承诺的响应。所有
返回
来自函数的承诺您没有返回来自fn1和fn2的承诺
异步函数createElement(req,res){
设fn1=()=>{
返回新承诺((解决)=>{
设置超时(()=>{
console.log(“来自fn1的消息”)
解决()
},1000)
});
}
让fn2=()=>{
返回新承诺((解决)=>{
设置超时(()=>{
console.log(“来自fn2的消息”)
解决()
},1000)
});
}
const time1=new Date().getTime();
日志(“打开时间1”,时间1)
让响应=等待承诺。全部([fn1(),fn2())
日志(“等待响应”)
const time2=new Date().getTime();
日志(“打开时间2”,时间2)
log('result:',time2-time1);
}
createElement()
fn1
和fn2
不返回已创建的承诺。让他们回报一个承诺,它应该会起作用。投票结束,作为离题。打字错误:缺少return
s。您也可以删除这些箭头函数中的外部{}
,以获得隐式返回:p