-2
做我有node.js的一个简单的功能与开关在for循环:回调在node.js中
function bodybuilder(queryArea,callback)
{
var ret='';
for (var attributename in queryArea.query)
{
switch(attributename)
{
case 'username':
{
ret+="Username branch added";
}
break;
case 'what':
{
filename="./demo.html";
fs.readFile(filename, function (err, data)
{if (err) throw(err);
var pom=data.toString();
ret=ret+pom;
});
}
break;
case 'color':
{
ret+="Color branch added";
}
break;
default: ret+="Unknown query";
}
}
return callback(ret);
}
每个开关分支访问并增加了一些返回值。
其中一个分支读取异步文件并将其内容添加到返回值中。
如何在所有开关分支完成后对此函数进行回调并返回值?这意味着,即使在处理文件的异步操作完成之后呢?节点并不等待那个。
这是一个学习的例子,所以显示原理是最好的。
伟大的答案。尽可能保持一般 - 如果你不知道哪个分支最慢,如何确保这个功能?如果你有例如readFile在两个分支? –
为所有异步调用保留计数器并在所有异步调用的回调中检查计数器if(counter ==的数量),如果为true,则调用整个函数的回调函数。 –
真的很好,可以理解的答案。接受并感谢你 –