代码之家  ›  专栏  ›  技术社区  ›  bigbounty

使用异步/等待不起作用

  •  1
  • bigbounty  · 技术社区  · 9 年前

    var get_all_channels = function {
        return new Promise(()=> {
            db.find({type:'pricing'},{channel_name:1},function(err,docs){
            if(err)
                return err;
            var c = []
            docs.forEachOf(function(ch){
                c.push(ch['channel_name'])
            })
            return c;
        })
        })
    }
    
    async function send(){
        return await get_all_channels()
    }
    function calculate(){
        send().then(res => alert(res))    
    }
    

    在这里,上述功能不起作用。我不知道为什么?请帮我修复这个函数。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Alberto Trindade Tavares    9 年前

    c 在里面 get_all_channels

    var get_all_channels = function {
        return new Promise((resolve, reject)=> {
            db.find({type:'pricing'},{channel_name:1},function(err,docs){
            if(err) {
                reject(err)
                return
            }
    
            var c = []
            docs.forEachOf(function(ch){
                c.push(ch['channel_name'])
            })
    
            resolve(c)
        })
        })
    }
    

    calculate ,您也可以使用 await async/await 在里面 send 只要它只返回 :

    function send(){
       return get_all_channels()
    }
    
    async function calculate(){
       alert(await send())  
    }
    
    推荐文章