Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Isn';与Node异步不是更好吗_Javascript_Arrays_Node.js_Performance_Asynchronous - Fatal编程技术网

Javascript Isn';与Node异步不是更好吗

Javascript Isn';与Node异步不是更好吗,javascript,arrays,node.js,performance,asynchronous,Javascript,Arrays,Node.js,Performance,Asynchronous,这是我的密码 var x = 0 data.results[0].taxonomies.some(function(e){ if(taxo.indexOf(e.code)!=-1){ //if at least one code from the data base is in my list of codes callback(validLic(data.results[0].taxonomies)) //return true after some other val

这是我的密码

var x = 0
data.results[0].taxonomies.some(function(e){
    if(taxo.indexOf(e.code)!=-1){ //if at least one code from the data base is in my list of codes
        callback(validLic(data.results[0].taxonomies)) //return true after some other validations
        return true
    }else{
        x++
        return false
    }
})
if(x==data.results[0].taxonomies.length){callback(false)}//if the entire array was processed, and I didn't find anything I was looking for, return false
我希望有人确认,由于node的异步性质,最后一个if语句在某个点上,在我处理完数组之前一定会触发

如果没有同步或并行库的帮助,我如何更好地管理这种情况

我这样问的原因是因为我的印象是,如果我不能编写完全异步的东西,那么我就不能高效地编写它,对吗

编辑:

根据Luc Hendirks的逻辑,我将代码更改为:

var flag = data.results[0].taxonomies.some(function(e){
   if(taxo.indexOf(e.code)!=-1){ //if at least one code from the data base is in my list of codes
       return true
   }else{
       return false
   }
})
if(flag==true){
    callback(validLic(data.results[0].taxonomies))
}else{
    callback(false)
}
因为这遵循了下面概述的同步特性,所以现在调用回调之前不应该存在未定义标志的问题,对吗?

Javascript(和节点)是单线程的,这意味着它只有1个可用CPU。如果您调用的函数只需要CPU时间,那么使其异步是没有用的。如果您需要调用一个函数,而CPU必须等待(不执行任何操作),那么使其异步是非常有用的。因为当它等待函数完成时,它可以做其他事情

一个用正则表达式检查url是否有效的函数可以是同步的,因为CPU需要进行一些计算并得到结果。如果函数实际执行GET请求并检查响应代码,则CPU必须等待直到收到响应。同时,它还可以做其他事情,所以这个函数应该是异步的

同步函数和异步函数的区别在于,同步函数返回一个值:

function(a) { return a; }
异步函数使用回调函数返回结果(这是作为函数参数输入的实际函数):

同步函数的调用方式如下:

var a = something();
something(function(result){
    console.log(result);
});
如下所示:

var a = something();
something(function(result){
    console.log(result);
});

为了回答您的问题,如果
some()
是一个异步函数,那么最后一个if语句可以在some函数完成之前执行。因为:CPU不想等待。它可以在等待时做其他事情。这就是异步编程的威力。t

了解Javascript/Node中不存在“并行”也很重要。只有“做事情而不是等待”,比如同时执行多个API调用。这与使用多线程时的并行计算不同

这里有更多信息:

Javascript(和节点)是单线程的,这意味着它只有1个可用CPU。如果您调用的函数只需要CPU时间,那么使其异步是没有用的。如果您需要调用一个函数,而CPU必须等待(不执行任何操作),那么使其异步是非常有用的。因为当它等待函数完成时,它可以做其他事情

一个用正则表达式检查url是否有效的函数可以是同步的,因为CPU需要进行一些计算并得到结果。如果函数实际执行GET请求并检查响应代码,则CPU必须等待直到收到响应。同时,它还可以做其他事情,所以这个函数应该是异步的

同步函数和异步函数的区别在于,同步函数返回一个值:

function(a) { return a; }
异步函数使用回调函数返回结果(这是作为函数参数输入的实际函数):

同步函数的调用方式如下:

var a = something();
something(function(result){
    console.log(result);
});
如下所示:

var a = something();
something(function(result){
    console.log(result);
});

为了回答您的问题,如果
some()
是一个异步函数,那么最后一个if语句可以在some函数完成之前执行。因为:CPU不想等待。它可以在等待时做其他事情。这就是异步编程的威力。t

了解Javascript/Node中不存在“并行”也很重要。只有“做事情而不是等待”,比如同时执行多个API调用。这与使用多线程时的并行计算不同


这里有一些更多的信息:

你从哪里得到这种印象的?我有一个完整的游戏是异步编写的,非常棒。我已经看到了数百个高效的“同步”Hello World实现。这里有一个:
echo“Hello world”
。这里有一个“ansynchronous”版本:
echo“Hello World”&
哪个是berrer?为什么不使用并行库
parallel
是一个很棒的并行库,
async
非常适合异步代码(但不是真正的并行)
async
对于您的案例有许多非常有用的方法。要回答您的问题,如果
callback
有一些异步方法,那么是的,代码是错误的。如果只是同步方法(返回一个值),那么它是对的。你从哪里得到这种印象的?我有一个完整的游戏是异步编写的,这是了不起的。我见过数百个高效的“同步”Hello World实现。这里有一个:
echo“Hello world”
。这里有一个“ansynchronous”版本:
echo“Hello World”&
哪个是berrer?为什么不使用并行库
parallel
是一个很棒的并行库,
async
非常适合异步代码(但不是真正的并行)
async
对于您的案例有许多非常有用的方法。要回答您的问题,如果
callback
有一些异步方法,那么是的,代码是错误的。如果它只是同步方法(返回一个值),那么它是正确的。因此,我需要找到一个同步方法来查看数组中的元素。感谢您提供的信息,所以我需要找到一种同步方法来查看数组中的元素。谢谢你的信息