if语句是否在节点中阻塞?

时间:2015-03-12 08:01:44

标签: node.js if-statement blocking nonblocking

我经常看到这种模式:

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阻止了吗?

2 个答案:

答案 0 :(得分:0)

是的,varif都在阻止。

Node.js中阻止的唯一内容是与I / O相关的任何内容,例如磁盘访问,网络访问和放大器。共

答案 1 :(得分:0)

在node.js中,块中的每个操作都将在前一个操作之后执行,但有时,结果需要一些时间(异步函数,如I / O)

所以是的,“if”是阻塞的,这意味着你不会在它结束之前执行“mac.save()”。

举一个简单的例子,试着做一个无限循环。虽然你没有离开这个循环,但你不会做任何其他事情。您甚至无法执行异步函数或事件的回调。