求助:require引入包的问题
发布于 3 年前 作者 iori2882 1877 次浏览 来自 问答

let wechatConfig = require('./config.js').getConfig(); getConfig()方法如果不是asyn的没问题,现在想调用asyn的方法如何调用啊? getConfig()方法如下: getWechatConfig: async function () {}

9 回复

放在async函数里let wechatConfig = await getConfig()调用,或者 getConfig().then(function(wechatConfig){ }); 另外我也非常认可在nodejs里直接用js做配置文件最好用

@zengming00 嗯,放在async函数里调用是没问题的,但是这里因为种种原因,还是想直接在require里调用这个方法

是不是require不能调用带async的方法

@iori2882 当然可以,只是直接调用async方法返回的都是promise并不是你想要的值

@zengming00 那只有放弃了啊

@zengming00 那只有放弃了啊

放弃什么?这没毛病呀,等到一切准备就绪最后开启服务,其实我发现很多公司的项目都忽略了这点,直接上来就把http服务开启了也不管数据库和其它资源有没有初始化完成

@zengming00 是这样的,我调用了一个微信消息服务框架,如下面代码,他的config是静态的,而我的config是调用带有async的方法获得的,所以现在我没办法在/main路由里注入我的config

var wechat = require(‘wechat’); var config = { token: ‘token’, appid: ‘appid’, encodingAESKey: ‘encodinAESKey’, checkSignature: true }; app.use(’/wechat’, wechat(config, function (req, res, next) { //do something }

其实问题不大呀,肯定是先获取到config再去调用微信的接口的,这是顺序执行的,异步只不过是非阻塞,但是执行顺序是不变的。既然你的config是异步获取,那就在异步回调或者async wait或者promise then中去调用微信

@iori2882 自己开发一个中间件,把wechat中间件再包一层即可

回到顶部