【发布时间】:2017-01-11 20:18:31
【问题描述】:
我确定这是我遗漏的一些小东西,我会第一个告诉你我不是 Angular 或 ES6 专家。我有以下代码集:
getScanner(){
var that = this;
cordova.plugins.barcodeScanner.scan(
function (result) {
console.log("OBJ "+result);
that.data = result;
//THIS IS DEFINED
console.log("That data first is "+that.data);
alert("We got a barcode\n" +
"Result: " + result.text + "\n" +
"Format: " + result.format + "\n" +
"Cancelled: " + result.cancelled);
},
function (error) {
alert("Scanning failed: " + error);
}
);
//THIS IS UNDEFINED
console.log("That data is finally "+that.data);
}
正如您在上面看到的,当我第一次在回调中设置 that.data 时,它可以很好地打印到控制台。然后,一旦我在 Cordova 调用之外访问 console.log,它就会以某种方式失去参考。我做错了什么?
【问题讨论】:
-
承诺在哪里?看起来你正在使用回调。
-
整个 sn-p cordova.plugins.barcodeScanner.scan 直接来自他们的示例。这是插件API。我唯一写的是控制台日志和变量。
-
好的,但是没有任何承诺,即使承诺它以使编写代码更容易是个好主意!
标签: angular ecmascript-6