gpt4 book ai didi

node.js - 不懂回调和非阻塞的例子——Node.js

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:23 25 4
gpt4 key购买 nike

在Hands-on Node 一书中,作者给出了一个阻塞I\O的例子,

var post = db.query("select * from posts where id = 1");
doSomethingWithPost(post)
doSomethingElse();

作者说在第 1 行执行完数据库查询之前什么都不执行

然后,他展示了非阻塞代码

callback = function(post){
doSomethingWithPost(post)
}

db.query("select * from posts where id = 1",callback);
doSomethingElse();

在执行查询之前,这不也是阻塞的吗?

因此,doSomethingElse 在查询完成之前不会执行。

最佳答案

您应该始终将非阻塞函数(如 doRealStuff(params, callback))解读为“将 doRealStuff、params 和 callback 放入队列,在到达队列末尾时执行 callback()”。这也可能有助于避免犯这样的错误

for (var i=0; i < 1000000; i++)
{
// I want to do many http requests now
do_request(test_url);
}

// not a single byte is sent here because event loop was blocked by for loop

关于node.js - 不懂回调和非阻塞的例子——Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com