私は自社用の内部NPMモジュールを作成しているので、アプリケーションがハードウェアデバイスとやりとりすることができます。問題は、私が作成しようとしている1つのメソッドが非同期に実行する必要があることです。私は関数がデバイスから読み込むコマンドを送信し、それが返るのを待つ(デバイスライブラリがこれを処理する)ようにして、結果を解析します。私が望むのは、他の開発者がexports.getResolution()を呼び出して値を取得できることです。私は、コールバック地獄、約束、青い鳥、ES6非同期機能、および他のソリューションの束を試してみましたが、私はこの1つだけを把握することはできませんノードモジュールでasyncを使用する - 結果を返すには?
var async = require('async');
exports.getResolution = async.series([
function(callback) {
board.sendAndReceive(bufferlib.generateBuffer("read", "0x00001220", "0x00000004"), (function(received) {
var hex = bufferlib.sortReceivedHex(received);
var status = parseInt('0x' + hex.substring(0, 1), 16);
var verticalResolution = parseInt('0x' + hex.substring(1, 4), 16);
var horizontalResolution = parseInt('0x' + hex.substring(5, 9), 16);
callback(null, {
'status': status,
'vertical': verticalResolution,
'horizontal': horizontalResolution
});
}));
}
],
// optional callback
function(err, results) {
status = results[0];
return results[0];
});
console.log(exports.getResolution);
:ここに関連部分と私のファイルの抜粋です。私の最近の試みでは非同期ノードモジュールを使って非同期的にコードを実行しようとしていますが、最終的なコールバックが受け取る実際の値を返すためにexports.getResolutionを取得する必要があります。私は間違って何をしていますか?この仕事をするために私は何ができますか?ありがとうございました。
ありがとうございました。可能であれば潜在的なコールバック地獄を避けたいと思っていますが、私は時間を感謝し、あなたの応答に入れたと思っています。 – millipedeman