Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 等待时js是否阻塞? const somefunction=async()=>{ 常数arr=[…] 对于(设i=0;i{ setTimeout(()=>res(“完成”),2000) } ) 日志(“异步操作完成:”+消息) } 异步函数asyncActions(){ 等待异步操作(“1”) 控制台日志(“1完成”) 等待异步操作(“2”) 控制台日志(“2完成”) 等待异步操作(“3”) 控制台日志(“3完成”) } console.log(“程序启动”) 异步操作() console.log(“程序完成”)这是否回答了您的问题?不,一点也不@TobiasSchäfera该问题具体指的是forEach,它与for loopYes完全不同。这说明了异步的作用,但问题更具体地说与它在for循环中的行为有关。然而,for loop处理大型数组将被视为阻塞否?@John-如果“处理”则不是意思是等待实际上是异步的承诺。好的,谢谢。我找不到任何关于你所说内容的文件,你知道吗。我保持着我认为不正确的着陆:“wait表达式导致异步函数执行暂停,直到一个承诺得到解决(即,实现或拒绝),并在完成后恢复异步函数的执行…允许等待函数的调用方在等待函数的延迟继续之前恢复执行。在等待函数延迟其函数的继续之后,如果这是函数执行的第一次等待,则立即执行也会通过返回来继续向函数的调用方发送一个挂起的承诺,用于完成wait函数并恢复该调用方的执行” const somefunction = async () => { const arr = [...] for(let i = 0 ; i < arr.length ; ++i){ await updater(arr[i]) } }_Javascript_Async Await - Fatal编程技术网

Javascript 等待时js是否阻塞? const somefunction=async()=>{ 常数arr=[…] 对于(设i=0;i{ setTimeout(()=>res(“完成”),2000) } ) 日志(“异步操作完成:”+消息) } 异步函数asyncActions(){ 等待异步操作(“1”) 控制台日志(“1完成”) 等待异步操作(“2”) 控制台日志(“2完成”) 等待异步操作(“3”) 控制台日志(“3完成”) } console.log(“程序启动”) 异步操作() console.log(“程序完成”)这是否回答了您的问题?不,一点也不@TobiasSchäfera该问题具体指的是forEach,它与for loopYes完全不同。这说明了异步的作用,但问题更具体地说与它在for循环中的行为有关。然而,for loop处理大型数组将被视为阻塞否?@John-如果“处理”则不是意思是等待实际上是异步的承诺。好的,谢谢。我找不到任何关于你所说内容的文件,你知道吗。我保持着我认为不正确的着陆:“wait表达式导致异步函数执行暂停,直到一个承诺得到解决(即,实现或拒绝),并在完成后恢复异步函数的执行…允许等待函数的调用方在等待函数的延迟继续之前恢复执行。在等待函数延迟其函数的继续之后,如果这是函数执行的第一次等待,则立即执行也会通过返回来继续向函数的调用方发送一个挂起的承诺,用于完成wait函数并恢复该调用方的执行” const somefunction = async () => { const arr = [...] for(let i = 0 ; i < arr.length ; ++i){ await updater(arr[i]) } }

Javascript 等待时js是否阻塞? const somefunction=async()=>{ 常数arr=[…] 对于(设i=0;i{ setTimeout(()=>res(“完成”),2000) } ) 日志(“异步操作完成:”+消息) } 异步函数asyncActions(){ 等待异步操作(“1”) 控制台日志(“1完成”) 等待异步操作(“2”) 控制台日志(“2完成”) 等待异步操作(“3”) 控制台日志(“3完成”) } console.log(“程序启动”) 异步操作() console.log(“程序完成”)这是否回答了您的问题?不,一点也不@TobiasSchäfera该问题具体指的是forEach,它与for loopYes完全不同。这说明了异步的作用,但问题更具体地说与它在for循环中的行为有关。然而,for loop处理大型数组将被视为阻塞否?@John-如果“处理”则不是意思是等待实际上是异步的承诺。好的,谢谢。我找不到任何关于你所说内容的文件,你知道吗。我保持着我认为不正确的着陆:“wait表达式导致异步函数执行暂停,直到一个承诺得到解决(即,实现或拒绝),并在完成后恢复异步函数的执行…允许等待函数的调用方在等待函数的延迟继续之前恢复执行。在等待函数延迟其函数的继续之后,如果这是函数执行的第一次等待,则立即执行也会通过返回来继续向函数的调用方发送一个挂起的承诺,用于完成wait函数并恢复该调用方的执行” const somefunction = async () => { const arr = [...] for(let i = 0 ; i < arr.length ; ++i){ await updater(arr[i]) } },javascript,async-await,Javascript,Async Await,上面的for循环将在移动到下一个迭代之前等待承诺的解决,但是,这现在是nodejs中主事件循环的阻塞操作吗 请注意:这是一个“for”而不是“forEach”循环。非常不同。不,它没有阻塞 async函数在等待承诺时进入休眠状态。控件返回给调用函数(该函数获取从async函数返回的未解析承诺) (当然,如果updater被阻塞,那么它仍然会被阻塞)。正如您通过运行此示例所看到的,该函数将是非阻塞的。这就是异步等待的本质 函数异步操作(消息){ log(“异步操作启动:”+消息) 返回新承诺((

上面的for循环将在移动到下一个迭代之前等待承诺的解决,但是,这现在是nodejs中主事件循环的阻塞操作吗

请注意:这是一个“for”而不是“forEach”循环。非常不同。

不,它没有阻塞

async
函数在等待承诺时进入休眠状态。控件返回给调用函数(该函数获取从
async
函数返回的未解析承诺)


(当然,如果
updater
被阻塞,那么它仍然会被阻塞)。

正如您通过运行此示例所看到的,该函数将是非阻塞的。这就是异步等待的本质

函数异步操作(消息){
log(“异步操作启动:”+消息)
返回新承诺((res,err)=>{
setTimeout(()=>res(“完成”),2000)
}
)
日志(“异步操作完成:”+消息)
}   
异步函数asyncActions(){
等待异步操作(“1”)
控制台日志(“1完成”)
等待异步操作(“2”)
控制台日志(“2完成”)
等待异步操作(“3”)
控制台日志(“3完成”)
}   
console.log(“程序启动”)
异步操作()

console.log(“程序完成”)
这是否回答了您的问题?不,一点也不@TobiasSchäfera该问题具体指的是forEach,它与for loopYes完全不同。这说明了异步的作用,但问题更具体地说与它在for循环中的行为有关。然而,for loop处理大型数组将被视为阻塞否?@John-如果“处理”则不是意思是等待实际上是异步的承诺。好的,谢谢。我找不到任何关于你所说内容的文件,你知道吗。我保持着我认为不正确的着陆:“wait表达式导致异步函数执行暂停,直到一个承诺得到解决(即,实现或拒绝),并在完成后恢复异步函数的执行…允许等待函数的调用方在等待函数的延迟继续之前恢复执行。在等待函数延迟其函数的继续之后,如果这是函数执行的第一次等待,则立即执行也会通过返回来继续向函数的调用方发送一个挂起的承诺,用于完成wait函数并恢复该调用方的执行”
const somefunction = async () => {
  const arr = [...]
  for(let i = 0 ; i < arr.length ; ++i){
    await updater(arr[i])
  }
}