如何让下面的代码正常调用异步方法?

新手上路,请多包涵

问题描述

function setupBridge (ctx, next) {

if (hasBootErrors(ctx)) {
  return next();
}
ctx.bridge = require('../plugins/bridge')(env);
if (ctx.bridge) {
  ctx.bridge.startEngine(ctx.entries);
}
next( );

}
ctx.bridge.startEngine(ctx.entries)不能正常执行,找不到startEngine(ctx.entries)方法,
已知bridge.startEngine是在异步方法内部存在

问题出现的环境背景及自己尝试过哪些方法

当方法不是异步的时候,可以正常调用

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
被调用的方法:
async function create (env) {

var bridge = { };

var opts = await options(env);
var interval = opts.interval;

mostRecentRecord = new Date().getTime() - opts.fetch.minutes * 60000

bridge.startEngine = function startEngine (entries) {

opts.callback = bridged(entries);

setInterval(function () {
  opts.fetch.minutes = parseInt((new Date() - mostRecentRecord) / 60000);
  opts.fetch.maxCount = parseInt((opts.fetch.minutes / 5) + 1);
  opts.firstFetchCount = opts.fetch.maxCount
  console.log("Fetching Share Data: ", 'minutes', opts.fetch.minutes, 'maxCount', opts.fetch.maxCount);
  engine(opts);
}, interval);

};
bridge.startEngine();
return bridge;
}

你期待的结果是什么?实际看到的错误信息又是什么?

希望ctx.bridge.startEngine(ctx.entries)能够正常执行

回复
阅读 1.2k
1 个回答

把你的

return Promise.resolve(bridge)

写到异步请求的回调里面

在调用的地方

async function setupBridge (ctx, next) {

    if (hasBootErrors(ctx)) {
      return next();
    }
    ctx.bridge = require('../plugins/bridge')(env);
    if (ctx.bridge) {
      await ctx.bridge.startEngine(ctx.entries);
    }
    next( );
}
宣传栏