gpt4 book ai didi

javascript - node.js 等待尚未可用的 promise

转载 作者:行者123 更新时间:2023-12-02 22:56:22 27 4
gpt4 key购买 nike

在我的“app.js”中,我有一个异步函数等待连接从我导入的connection.js准备就绪

我不确定如何让 app.js 在“等待”状态下正常运行。在connection.js中,我无法在“on”函数中添加导出,也无法在on函数之外添加导出。

我仍在学习 Promise/await 等,因此我们将不胜感激。

app.js

var qlabconn = require('./qlab/connection.js');

// Wait for QLab connection, then we'll start the magic!
(async () => {
console.log('Ready!');
var qlabConnectionReady = await qlabconn.connectionReady;
//qlab.cues.x32_mute('1', "OFF");
console.log(qlabConnectionReady);
})();

连接.js

// On connection to QLab
qlabconn.on('ready', () => {
console.log('Connected to QLab!');
let connectionReady = new Promise(resolve => {
resolve(true)
});

(async () => {
await core.send_message(`/alwaysReply`, {"type" : 'f', "value" : 1})
})();
});

最佳答案

如果您需要根据回调结果获取 Promise,则应将逻辑包装在新的 Promise 回调中。例如,在connection.js中:

// return a reference to qlabconn once we have established a connection
module.exports = function getConnection() {
return new Promise((resolve, reject) => {
// let qlabconn = new QLabConnection(...)
qlabconn.on('ready', () => resolve(qlabconn));
})
}

然后,我们可以像平常一样在app.js中使用连接对象。

const getConnection = require('./connection');

(async () => {
let qlabconn = await getConnection();
console.log(qlabconn.connectionReady);

await core.send_message(`/alwaysReply`, {type: 'f', value: 1});
console.log('Connected to QLab!');
// qlab.cues.x32_mute('1', 'OFF');
})();

关于javascript - node.js 等待尚未可用的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57960903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com