首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >async函数仅在async函数中有效

async函数仅在async函数中有效
EN

Stack Overflow用户
提问于 2019-03-09 17:34:47
回答 1查看 257关注 0票数 0

我正在尝试让计算聚合,以等待在fetch记录中解析的承诺。但我不能让等待起作用。这看起来是可以做的。但我不能让它在等待状态下工作。

我也试着把它包装在一个承诺中。但没有变化。

我收到错误:等待仅在异步函数中有效

代码语言:javascript
复制
const computeAggregate = async (model, sym) => {
    model.collection.distinct("minutes_offs", {
        symbol: sym
    }, function (error, distMinutes) {
        for (minuteIndex in distMinutes) {
            console.log("inside minutes off", distMinutes[minuteIndex]);
            try {

                const records = await fetchRecords(model, sym, distMinutes[minuteIndex]); //this does not work.
                const aggData = getAggregateData(records);
                createCollection(aggData);
            } catch (e) {
                console.log("error in computeAggregate", e);
            }
        }
    });
}

const fetchRecords = async (model, sym, minutesOff) => {
    console.log("compute function : input param", sym, minutesOff);
    var query = model.find({
        symbol: sym,
        minutes_offs: minutesOff
    }).sort({
        minutes_offs: +1
    });
    return query.exec();
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-09 17:40:05

您错误地使用了async / await:

代码语言:javascript
复制
const computeAggregate = (model, sym) => {
    model.collection.distinct("minutes_offs", {
        symbol: sym
    }, async (error, distMinutes) => {  // async is required here
        for (minuteIndex in distMinutes) {
            console.log("inside minutes off", distMinutes[minuteIndex]);
            try {

                const records = await fetchRecords(model, sym, distMinutes[minuteIndex]); //this does not work.
                const aggData = getAggregateData(records);
                createCollection(aggData);
            } catch (e) {
                console.log("error in computeAggregate", e);
            }
        }
    });
}

// async is not required here because you never use await
const fetchRecords = (model, sym, minutesOff) => {
    console.log("compute function : input param", sym, minutesOff);
    var query = model.find({
        symbol: sym,
        minutes_offs: minutesOff
    }).sort({
        minutes_offs: +1
    });
    return query.exec(); // this query.exec() must return a promise
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55075925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档