我是javascript的新手所以任何人都可以帮我弄清楚为什么这段代码不起作用?
我有一个类,它称为cordova条形码扫描功能。我有一个有效的例子,但是我希望能够分离出函数(结果)和函数(错误)并使用onSuccess(result)和onFailure(错误)。
我不知道为什么会发生这种情况,所以如果有人能提供帮助那就太棒了。
编辑:所以我更新了基于Stradosphere的代码,但是我仍然得到结果没有定义错误。完整的错误消息:
未捕获的ReferenceError:未在HTMLButtonElement.myFunction(main.js:18)的barcodeScanner.scanBarcode(barcodeScanner.js:10)中定义结果
var me = this;
class barcodeScanner {
constructor() {
this._barcodeResult = 0;
}
scanBarcode() {
//THIS THROWS result is not defined error
cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));
//THIS WORKS
cordova.plugins.barcodeScanner.scan(
function (result) {
me._barcodeResult = result.text;
alert("Barcode Scanned:" + me._barcodeResult);
},
function (error) {
alert("Scanning failed: " + error);
}
);
}
onSuccess(result) {
this._barcodeResult = result.text;
alert("Barcode Scanned:" + this._barcodeResult);
}
onFailure(error) {
alert("Scanning failed: " + error);
}
}
答案 0 :(得分:1)
查看docs,似乎cordova.plugins.barcodeScanner.scan()
希望您将函数传递给它。但你这样称呼它:
cordova.plugins.barcodeScanner.scan(me.onSuccess(result), me.onFailure(error));
这是传递函数.onSuccess(result)
的结果,但未定义result
,因此您收到错误。另外,您希望this
成为类实例,但是通过在类外部将me
定义为this
,me
不会像您想要的那样等于类实例它来。但无论如何你根本不需要它。
尝试传递函数:
cordova.plugins.barcodeScanner.scan((result) => this.onSuccess(result),(error)=> this.onFailure(error))
答案 1 :(得分:0)
对您使用此问题可能存在范围问题。尝试:
var me = this; //(put this at class level)
cordova.plugins.barcodeScanner.scan(me.onSuccess, me.onFailure);