[英]Javascript promise never resolves
我在 typescript 项目中使用名为 node- poweredup的库中的 rotateByDegrees:
motor.rotateByDegrees(20,10).then(function(value) {console.log("test");}, function(value) {console.log("error");});
我希望在成功完成后看到“测试”,但 promise 永远不会解决。 如果我使用等待,它会永远挂在等待线上。 复制似乎在 rotateByDegrees function 中使用的语法:
let promise = new Promise((resolve) => { return resolve(); });
无法编译,我收到error TS2794: Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'?
我可以使用resolve(true)
使其编译并按预期运行,但是它如何在库中编译呢? 我误解了承诺吗? typescript 中的某些功能? 库中的错误? 我是 JavaScript 的新手,我不想通过包含不相关的细节来过度复杂化这个问题。 如果您能给我提示我缺少什么以及如何调试它,我可以提供所有相关的详细信息。
感谢有用的评论,我能够将其范围缩小到库的编译。 事实上,我并没有使用预编译的二进制文件,而是必须自己使用电子重建来编译库以使蓝牙适配器工作。 我做了以下测试:
git clone https://github.com/nathankellenicki/node-poweredup.git
cd node-poweredup
npm install
npm run build
这编译没有错误。 我创建了以下测试文件
const PoweredUP = require("node-poweredup");
const poweredUP = new PoweredUP.PoweredUP();
poweredUP.scan(); // Start scanning for hubs
console.log("Looking for Hubs...");
poweredUP.on("discover", async (hub) => { // Wait to discover hubs
await hub.connect(); // Connect to hub
console.log(`Connected to ${hub.name}!`);
const motorA = await hub.waitForDeviceAtPort("A"); // Make sure a motor is plugged into port A
motorA.rotateByDegrees(20,10).then(function(value) {console.log("test");});
});
并获得预期的 output:
node-poweredup$ node test.js
Looking for Hubs...
Connected to MyHub2!
test
Connected to MyHub3!
test
当我将第一行更改为
const PoweredUP = require(".");
让它使用我自己编译的二进制文件
node-poweredup$ node test.js
Looking for Hubs...
Connected to MyHub2!
Connected to MyHub3!
当然这只是部分答案,因为我仍然不知道为什么它在我的机器上编译不同,但至少我知道从哪里开始寻找问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.