首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NodeJS查找循环结束后循环结果的查询

NodeJS查找循环结束后循环结果的查询
EN

Stack Overflow用户
提问于 2018-12-19 01:49:59
回答 1查看 499关注 0票数 0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var user_id = '98-XXXXXXXX'

Contact.find({user_id: user_id})
.exec(function (err, results) {
  if (err) { 
    return next(err); 
  }
    var finalArray = [];
    for(var i = 0; i< results[0].Total; i++) {

      if(results[0].Contacts[i].name != "SPAM") {

       for(var j = 0; j < results[0].Contacts[i].phoneNumbers.length; j++){

           var number = results[0].Contacts[i].phoneNumbers[j].number
           number = number.replace(/ /g,'');
            var user_id = number.substr(number.length - 10); 

                Login.find({user_id:user_id})
                .exec(function(err,results) {
                if(err) {
                return next(err); }

                    var intCount = results.length;
                        if (intCount > 0)
                        {
                            console.log('called')
                            finalArray.push(results[0])
                            console.log(finalArray)
                        } 
               });

            }
         }

        //console.log(i,results[0].Total - 1);
        //if(i == results[0].Total - 1)



    } 
                    console.log('Ended Here',finalArray)
                    var responseTosend = {"message":finalArray,"user_id":user_id}
                    return  res.send(responseTosend);

});

EndedHere[] --首先是空的,然后我得到了login.find查询的结果,这是正确的。任何想法如何得到finalArray后,所有的计算。提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-12-19 04:05:23

如前所述,这样的结构不会返回结果,但是中间函数或对象会在它们完成之前返回,因为nodejs不知道它应该先等待结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const x = [1,2,3]
let results = []

for (let i = 0; i < x.length; i++){
  results.push(someAsyncJobLikeADatabaseCall(x[i]))
}

// this will not return the results, but the intermediate async objects/functions
console.log(results)

这里有一个更好的版本,它使用承诺和.map函数。注意,我们是如何用.map()替换for循环的(您可以看到它是.forEach + push()或for() + push()的缩写)。如果配置正确,猫鼬会返回承诺,因此您甚至不必手动定义它们,我们可以在.map中直接返回它们。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const x = [1,2,3]
let results = []

async function getAsyncResults(array){
  // map returns an array, this time, an array of promises
  const promises = x.map(number => someAsyncJobLikeADatabaseCall(number))
  // Promise.all resolves, if all promises in the array have been resolved
  return Promise.all(promises)
}

try {
  let results = await getAsyncResults(x)
  // this will return the results you expect.
  console.log(results)
} catch (err) {
  console.log('Some error', err)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53848542

复制
相关文章
【Python】循环语句 ⑦ ( for 循环嵌套 | continue 临时跳过本次循环 | break 结束循环 )
在 for 循环 和 while 循环中 , 都可以 使用 continue 关键字 ;
韩曙亮
2023/10/11
2.4K0
【Python】循环语句 ⑦ ( for 循环嵌套 | continue 临时跳过本次循环 | break 结束循环 )
nodejs事件循环
js的执行是事件循环模型,同样作为服务端的nodejs也是基于事件循环的事件模型,但是他又增加了一些非 IO 的异步 API: setTimeOut(), setInterval(), setImmediate() 以及 process.nextTick()。四种方法实现原理相似,但达到的效果略有区别。
OECOM
2020/07/01
1K0
nodejs事件循环
当js同步脚本运行完后,如果有异步操作还没有完成,node就将进入事件循环,像http.createServer.listen,fs.readFileAsync等操作都会使node进入事件循环,没有的话node将直接退出。
conanma
2022/01/04
4690
linux如何安装nodejs_js 循环里面结束整个方法
官网下载 centos下载最新版10.9 https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz
全栈程序员站长
2022/09/27
5.4K0
窗口结束不断循环的线程
当程序有循环线程时,窗口关闭时(通过窗口右上角X按钮),重新启动程序失败,提示是否执行上一次结果,每执行上一次结果,就积累一个线程在编译器,因为程序没有完全关闭。
vv彭
2020/10/27
1.6K0
窗口结束不断循环的线程
shell 开始日期 结束日期循环
shell 日期循环 #!/bin/sh if [ $# == 2 ]; then datebeg=$1 dateend=$2 else echo "请输入开始时间和结束日期,格式为2017-04-04" exit 1 fi beg_s=`date -d "$datebeg" +%s` end_s=`date -d "$dateend" +%s` echo "处理时间范围:$beg_s 至 $end_s" while [ "$beg_s" -le "$end_s"
大数据工程师-公子
2019/03/14
2.8K0
linux学习第六十五篇:for循环,while循环, break跳出循环,continue结束本次循环
for循环 语法:for 变量名 in 条件; do …; done for循环会以空格作为分隔符 案例1 #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] echo $i done echo $sum 文件列表循环 #!/bin/bash cd /etc/ for a in `ls /etc/` do if [ -d $a ] then ls -d $a fi done while循环
用户1215343
2018/03/29
2.5K0
深度理解NodeJS事件循环
ALL THE TIME,我们写的的大部分javascript代码都是在浏览器环境下编译运行的,因此可能我们对浏览器的事件循环机制了解比Node.JS的事件循环更深入一些,但是最近写开始深入NodeJS学习的时候,发现NodeJS的事件循环机制和浏览器端有很大的区别,特此记录来深入的学习了下,以帮助自己及小伙伴们忘记后查阅及理解。
coder2028
2022/10/10
9820
彻底搞懂nodejs事件循环
nodejs是单线程执行的,同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回,就可以继续往下执行代码。当异步事件触发之后,就会通知主线程,主线程执行相应事件的回调。
coder2028
2022/09/26
1.1K0
Oracle PL/SQL例2:处理查询的结果行(基础循环)
本系列以摘自《Database PL/SQL Language Reference》的PL/SQL代码例为主进行介绍。
SQLplusDB
2022/08/22
6630
python中for循环的用法1+2+3…+50的和_python结束for循环
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170076.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
7720
在nodejs中事件循环分析
在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。然而在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行。 因此实际上node中的事件循环存在于libuv引擎中。
Yerik
2022/04/11
4K0
nodejs事件和事件循环详解
上篇文章我们简单的介绍了nodejs中的事件event和事件循环event loop。本文本文将会更进一步,继续讲解nodejs中的event,并探讨一下setTimeout,setImmediate和process.nextTick的区别。
用户2323866
2021/06/22
8550
nodejs事件和事件循环简介
熟悉javascript的朋友应该都使用过事件,比如鼠标的移动,鼠标的点击,键盘的输入等等。我们在javascript中监听这些事件,从而触发相应的处理。
程序那些事
2020/12/14
8060
nodejs源码解析之事件循环
nodejs的的事件循环由libuv的uv_run函数实现。在该函数中执行while循环,然后处理各种阶段(phase)的事件回调。事件循环的处理相当于一个消费者,消费由各业务代码生产的任务。下面看一下代码。
theanarkh
2020/01/15
7780
nodejs源码解析之事件循环
nodejs事件和事件循环简介
熟悉javascript的朋友应该都使用过事件,比如鼠标的移动,鼠标的点击,键盘的输入等等。我们在javascript中监听这些事件,从而触发相应的处理。
用户2323866
2021/06/22
8420
nodejs事件和事件循环简介
熟悉javascript的朋友应该都使用过事件,比如鼠标的移动,鼠标的点击,键盘的输入等等。我们在javascript中监听这些事件,从而触发相应的处理。
子润先生
2021/06/18
1K0
nodejs事件和事件循环详解
上篇文章我们简单的介绍了nodejs中的事件event和事件循环event loop。本文本文将会更进一步,继续讲解nodejs中的event,并探讨一下setTimeout,setImmediate和process.nextTick的区别。
程序那些事
2021/01/13
7440
nodejs事件循环阶段之prepare
prepare是nodejs事件循环中的其中一个阶段(phase)。属于比较简单的一个阶段。我们知道libuv中分为handle和request。而prepare阶段的任务是属于handle。我们看一下他的定义。
theanarkh
2020/03/12
7950
nodejs事件循环阶段之close
close是nodejs每轮事件循环中最后的一个阶段。我们看看怎么使用。我们知道对于一个handle,他的使用一般是init,start,stop。但是如果我们在stop一个handle之后,还有些事情需要处理怎么办?这时候就可以使用close阶段。close阶段可以用来关闭一个handle,并且执行一个回调。比如用于释放动态申请的内存。close阶段的任务由uv_close产生。
theanarkh
2020/03/16
9260

相似问题

nodejs -在for循环结束后返回承诺

20

查询结果循环中的nodejs查询

25

nodejs中循环结束后执行条件语句

247

具有with循环的NodeJS结束事件

27

如何在循环结束后发送函数的结果?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文