【发布时间】:2020-02-04 20:13:46
【问题描述】:
我正在尝试以异步方式返回直接方法调用的结果。
我试过了:
var client = Client.fromConnectionString(process.env.AZ_IOT_CONNECTION_STRING);
var methodParams = {
methodName: "method",
payload: 10, // Number of seconds.
responseTimeoutInSeconds: 60
};
// Call the direct method on your device using the defined parameters.
client.invokeDeviceMethod(
req.params.deviceId,
methodParams,
(err, result) => {
if (err) {
console.error(err);
} else {
console.log("success");
}
}
);
在设备上:
const method = async (request, response) => {
const longProcess = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, 5000);
});
};
try {
await longProcess();
response.send(200, `success`);
} catch (error) {
response.send(500, `Error: ${error}:`);
}
};
client.onDeviceMethod("method", method);
预期:5秒后返回成功
实际:返回 "BadRequest" "errorCode :400027" 但方法执行正确。
【问题讨论】:
标签: javascript node.js azure azure-iot-hub azure-iot-edge