【发布时间】:2019-10-14 16:17:37
【问题描述】:
我正在使用 Johnny-5、React 和 node.js 创建网站来控制我的 Arduino 板,但我一直在处理异步/等待功能。因此,用户将选择的端口(COM1)例如发送到服务器,然后服务器创建新的板实例
async function checkPortConnection(port) {
let board = new five.Board({port: port});
let success;
await board.on('error', () => {
success = false;
});
await board.on('ready', () => {
success = true;
});
return success;
}
我认为关键字 await 将停止函数执行并等待大约 7 秒的板响应,但是当我这样做时:
checkPortConnection(port).then((data)=>{
console.log(data);
});
我得到'未定义',(因为我得到 success 这是未定义的?)
之后,如果选择的端口正确与否,服务器将发送响应。
但我的问题是,如何从checkPortConnection() 函数中得到正确的响应?
【问题讨论】:
-
我不知道你正在使用的五个库,但是由于
on函数有一个回调,它可能不会返回一个承诺......你需要包装你的整个返回值在一个承诺中,然后resolve或reject取决于哪个事件被触发。否则它只会注册事件处理程序并返回值。
标签: javascript async-await es6-promise johnny-five