-4
ループ中にオブジェクトをループしようとしていますが、結果を得ることができません。実際には、内部で関数を実行した後にカウンタの値がインクリメントしていると仮定していましたループ...しかし、カウンタの値は、関数の実行前に、増加を取得している間に...私はここに whileループが関数実行まで待機していません
は私test.tsです...なぜこれが起こっている届かないexport class HelloIonicPage {
_i: number = 0;
barcode(index, pickuplist) {
BarcodeScanner.scan()
.then((barcodeData) => {
if (barcodeData.cancelled) {
alert("User cancelled the action!");
return false;
}
this.bartxt = barcodeData.text;
if (this.bartxt != '') {
this.authservice.testFunction(this.bartxt)
.subscribe(data => {
if (data !== '') {
alert("Scanned successfully!");
alert(this._i); //here the value of i should be 0, but it showing 2
if (this._i == (this.totalorders - 1)) {
alert(this._i + " _index");
this.finalacceptvendor(index, pickuplist);
} else {
alert(this._i + " _index");
this.vendorbarcode(index, pickuplist);
}
} else {
this.vendorbarcode(index, pickuplist);
alert(Wrong QR Code);
}
});
}
});
}
vendorbarcode(index, pickuplist) {
this.totalorders = 2;
while (this._i < this.totalorders) {
alert(this._i + "_index"); //here the value of i = 0
this.barcode(index, pickuplist);
this._i = this._i + 1;
}
}
}
Iここ2日からここにこだわっています... mkeさんがこの問題をソートするのを助けてください。
なぜ結果が得られませんか? – mast3rd3mon
関数の目的を説明できますか?メンバレベルでカウンタを保存することは、間違ったアプローチに見えます。私が収集したものから、あなたがスキャンするアイテムのリストを持っているように見えます。スキャンされたら、再度スキャンする必要はありません。カウンターを維持しようとするのではなく、リストからアイテムを削除するだけです。はるかに簡単にする必要があります。 – Brian
vendorbarcodeを非同期の関数にしないと、実行しようとしていることはできません。 whileループは、非同期アクションでは待機せずに、非同期/待機なしで続行します。 –