こんにちは私はwhileループから壊れてしまいます。その中で私は非同期関数を呼び出しています。私はその非同期呼び出しの出力からの特定のフィールドが空であるかどうかをチェックしなければなりません。そうしなければ、私はその非同期関数に再度呼び出します。私はこれを試しました:中から中断する毎に
var options = {
headers : {
'Fk-Affiliate-Id':'xxxxxxx' ,
'Fk-Affiliate-Token' : 'xxxxxxxxxxxxxxxx'
}
};
var state = ['approved','tentative','cancelled','disapproved'];
state.forEach(element => {
options.url = 'https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate='+startDate+'&endDate='+endDate+'&status='+element+'&offset=0';
loop : while(true){
// This is the async call
request.get(options, (err, res, body) => {
var data = JSON.parse(body);
console.log(data);
// I have to check whether next is empty or not ?
if(data.next === ''){
// I will perform some action on data here
break loop;
}
else{
// I will perform some action on data here
options.url = data.next;
}
});
}
});
しかし、これはエラーを示していますUnsyntactic break。 whileループを解除するには?
あなた 'break'文が非同期コールバックの内側にあります。他の関数の中からwhileループを抜け出せないし、非同期関数ではないことも確かである。そのコードを実行させても、非同期コールバックは 'while()'ループが終了するまで呼び出されないため、動作しません。 JSはシングルスレッドです。 'while()'ループは、ajaxコールバックが呼び出される前に終了する必要があります。これはまったく間違ったコードです。あなたが成し遂げようとしていることを言い返してください。そして、人々はそれを達成するための適切な方法を助けることができます。 – jfriend00
私はbody変数で非同期呼び出しからデータを取得します。次のフィールドが空であるかどうかを確認します。次が空でないなら、私は次のURLにそのURLを要求しなければなりません。それ以外の場合は、状態変数から別の要素を壊して取得し、プロセスを繰り返します。 –
'このサイトの動作方法は、編集リンクを使用して、あなたの質問に達成するための情報を追加する必要があります。コメント。 – jfriend00