我经常看到这种模式:
request( 'https://www.apple.com/macbook/', function( err, result ) {
if ( err ) return res.( 500 ).send( "Error" )
mac = new Macs({
mac: result
})
mac.save()
})
这表明if
语句可以在mac.save()
之前可靠地执行。但是在其他情况下尝试这个,我看到事情发生在if语句被考虑之前(或者它中的命令被完全执行)。
它阻止了吗?虽然我们正在使用它,var
阻止了吗?
答案 0 :(得分:0)
是的,var
和if
都在阻止。
Node.js中不阻止的唯一内容是与I / O相关的任何内容,例如磁盘访问,网络访问和放大器。共
答案 1 :(得分:0)
在node.js中,块中的每个操作都将在前一个操作之后执行,但有时,结果需要一些时间(异步函数,如I / O)
所以是的,“if”是阻塞的,这意味着你不会在它结束之前执行“mac.save()”。
举一个简单的例子,试着做一个无限循环。虽然你没有离开这个循环,但你不会做任何其他事情。您甚至无法执行异步函数或事件的回调。