V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
dantegg
V2EX  ›  JavaScript

请教一个赋值的问题

  •  
  •   dantegg · 2017-01-07 20:49:22 +08:00 · 1995 次点击
    这是一个创建于 2659 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ` 如何给 tempArray 赋值然后返回,现在总是返回一个空数组

            let tempArray = []; 
            news.toArray((err,items)=>{
                items.map(x=>{
                    tempArray.push({
                        "title":x.title,
                        "content":x.content,
                        "createTime":x.createTime
                    })
                })
            })
            return tempArray
    
    9 条回复    2017-01-08 13:21:04 +08:00
    rogerchen
        1
    rogerchen  
       2017-01-07 20:58:57 +08:00
    news 是什么, toArray() 是什么库的方法,签名是什么。
    dantegg
        2
    dantegg  
    OP
       2017-01-07 21:00:20 +08:00
    @rogerchen
    news 就是从 mongodb 里查出来的记录
    collection.find().toArray((err,items)=>{})
    这样的
    haozhang
        3
    haozhang  
       2017-01-07 21:13:22 +08:00 via iPhone   ❤️ 1
    你这个回调函数还没执行呢就返回了 array ,然后你取值的时候可能回调还没执行,所以不会有值的。
    rogerchen
        4
    rogerchen  
       2017-01-07 21:15:38 +08:00
    虽然代码槽点很多,但语法上确实看不出什么问题来。
    你打一个 log 看看 items 的长度吧,应该是逻辑上的问题。
    dremy
        5
    dremy  
       2017-01-07 21:19:44 +08:00 via Android
    根据第一项参数是 err 基本可以判定是异步的函数,在函数没有执行的时候就把空数组给返回了
    dantegg
        6
    dantegg  
    OP
       2017-01-07 21:35:48 +08:00
    自己解决了
    用 Promise.all
    结贴了
    dantegg
        7
    dantegg  
    OP
       2017-01-07 21:37:29 +08:00
    @rogerchen 求指正,槽点都有哪些=。=|||
    rogerchen
        8
    rogerchen  
       2017-01-07 21:42:00 +08:00
    @dantegg
    map 本身就要返回一个新数组,可以直接用来构建新数组。
    如果想要遍历数组,也该用 forEach 。
    vcfvct
        9
    vcfvct  
       2017-01-08 13:21:04 +08:00 via Android
    @haozhang 是呀,一语中的!楼主先多理解理解 js 中的 callback 和 event loop 是怎么回事。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2753 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:58 · PVG 20:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.