我在node.js中有一个简单的函数,其中switch为for循环:
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);
}
访问每个交换机分支并添加一些返回值。
其中一个分支读取异步文件并将其内容添加到返回值。
如何在完成所有切换分支后回调整个函数并返回值?这意味着,甚至在完成处理文件的异步操作之后呢? Node显然没有等待。
这是一个学习的例子,所以在这方面显示原则是最好的。
答案 0 :(得分:0)
for循环中有一个异步代码,你需要从异步开关案例中调用回调函数,因为它将在执行完整的for循环后执行。
使用以下代码段:
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;
callback(ret);
});
}
break;
case 'color':
{
ret+="Color branch added";
}
break;
default: ret+="Unknown query";
}
}
}