私はいくつかのI/Oを実行するネストされた関数を持っており、結果のデータが終わったらコールバックを呼び出します。このような何か:コールバック関数でデータを操作する
function getStatus(returnCallback, errorCallback) {
sendRequest('someData', returnCallback, errorCallback)
}
せるのsendRequest()は、ハードウェアと相互作用し、何かが間違っていた場合には、それはハードウェアまたはerrorCallbackから得たデータとreturCallbackを呼び出す関数です。 今、私の問題は、ハードウェアから返されるデータが、さまざまなパラメータを表す異なる数字で構成される本当に長い文字列であることです。私がしたいのは、returnCallbackに与えられたデータを操作し、各パラメーターのプロパティーを作成してオブジェクト化することです。それを行う方法はありますか?私はすでにasync.waterfallを使ってみました。
function getStatus(returnCallback, errorCallback) {
let returnArray = {};
async.waterfall([
function (callback) {
sendRequest('someData', callback, errorCallback);
},
function (data, callback) {
returnArray.statusBits = data.slice(0, 6);
returnArray.faultBits = data.slice(7, 13);
returnArray.alertBits = data.slice(14, 20);
returnArray.pumpRotationSpeed = parseInt(data.slice(21, 26));
returnArray.motorPower = parseInt(data.slice(27, 31));
returnArray.frequencyConverterTemperature = parseInt(data.slice(36, 39));
returnArray.pumpOperationTime = parseInt(data.slice(44, 48));
callback(null, returnArray)
}
], returnCallback(returnArray));
しかし何もしません。見えるように、滝の第2の機能は決して呼び出されません。これは滝に期待どおりに最初の関数からコールバックが構成されていないためかもしれないし、それがasync.waterfall
コールバックでコールバック(データ)の代わりコールバックの(NULLデータ)
正しい方向に私を指摘してくれてありがとう –
実際には、エラーの原因となる2番目のコールバック関数があるという事実を組み込む方法はありますか? sendRequestがエラーを返すと、滝が止まるようにしますか?何かのようなもの 'sendRequest( 'someData'、functon(data){callback(null、data)}、function(エラー){callback(error、null)})' –
あなたはそれを滝で、目標は、エラーの場合は残りのすべてのステップをスキップするか、または滝の最後で、エラーをチェックして処理して、滝の最後に行くことです。 – DrakaSAN