我是NodeJS的新手,我不确定如何声明以下函数。该函数仅包含一个生成字符串的for循环。没有进行“重量级”计算。
变式1:
function getRandomString(arg) {
for (var i = 0; i < 100; i++) {
// ...
}
return string;
}
var randomString = getRandomString(arg);
// ... an async code which will use the string
变体2:或者我应该将其设为异步(异步样式)?它看起来像这样:
function getRandomString(arg, callback) {
for (var i = 0; i < 100; i++) {
// ...
}
callback(string);
}
getRandomString(arg, function(randomString) {
// Async code...
});
答案 0 :(得分:2)
或者我应该让它异步?所以像这样:
function getString(arg, callback) { for(var i = 0;i<100;i++) { // ... } callback(string); }
没有。该代码仍然运行synchronousls,只有奇数回调样式才能返回结果。由于JS不进行尾调优化或具有延续支持,因此它只是引入了厄运金字塔而没有任何好处。
除非你真的使它异步(setTimeout
,nextTick
等),否则不要使用它,例如推迟单循环迭代。
答案 1 :(得分:0)
使它“异步”没有任何好处。实际上,代码将同步运行,getString方法仅在回调完成后退出。
你真正要做的唯一决定就是编码风格(你希望看起来异步与否)。
function getString(arg, callback)
{
for(var i = 0;i<100;i++)
{
// ...
}
//Callback will execute synchronously, and you will wait here until it is complete
callback(string);
}