我正在使用websocket libarary创建一些套接字来将数据传递到我的application.some,在我的代码中我写了下面一行。
connection.on('message', function(message)
{
SetOfInstruction1;
SetOfInstruction2;
});
我的疑问是:SetOfInstruction1和SetOfInstruction2;按顺序执行或以异步方式执行(这意味着setOfInstruction2可以在setOfInstruction1之前执行)????
以下是SetOfInstruction1和SetOfInstruction2的示例:
示例SetOfInstruction1
for (i 1 to n)
{
find something1 in something2 array
if something1 found then set found boolean to true else false;
}
SetOfInstruction2的示例是
for (i:1 to n)
{
if found =true; and someOtherConditions matches
send message back with true response
else{
//continue
}
}
答案 0 :(得分:2)
SetOfInstruction1;
SetOfInstruction2;
这些说明将始终按此顺序执行。 Javascript不会随机混合各行的执行顺序。现在...
someFunc(function () { console.log('first'); });
someFunk(function () { console.log('second'); });
这里完全不可预测,将首先记录。这取决于someFunc
和/或someFunk
是异步还是同步,如果它们是异步的,哪一个将首先完成。同样,我们可以绝对断言someFunc
将在someFunk
之前调用,但回调的执行顺序取决于这些函数的内部。
有一些同步函数可以进行回调,如下所示:
arr.sort(function (a, b) { return a - b; });
console.log(arr);
此处执行顺序就是您所看到的。控制台将记录已排序的数组。但是也有异步函数需要回调:
setTimeout(function () { console.log('second'); });
console.log('first');
回调将在控制台首次登录'。
后的某个时间调用您必须阅读该功能的文档才能知道哪个是。
答案 1 :(得分:1)
取决于您正在调用的函数。你需要阅读文档,看看asynchrounos是什么功能,什么不是。
例如fs.readdir
将以异步方式调用,但fs.readdirSync
不会。
已经说过,通常“常规”的JS动作,如遍历数组,设置变量某些值等,都不会异步调用。
关于node.js特定的api - 阅读文档。