我在 Android 应用程序中使用适用于 Phonegap 的 Barcodescannerplugin 时遇到了 Javascript 问题。
我使用的插件带有一个小的 Javascript,以便在我的 Phongap 应用程序中使用 Barcodescanner。但在我看来,提供的 javascript 函数的接口(interface)并不是最优的,因为我不想在使用这些方法的每个位置都进行错误处理。
这就是为什么我试图让该界面更简单,我只需要调用一个方法 scanBarcode()
并且调用脚本从扫描中获取文本,或者什么也不获取,如果某件事失败了。这是代码:
function scanBarcode(){
var resultText = '';
window.plugins.barcodeScanner.scan(
function(result) {
if (!result.cancelled){
resultText = result.text;
}
},
function(error) {
alert("Scanning failed: " + error);
}
);
return resultText;
}
我使用的插件可以在: Github Phonegap Plugins Android/BarcodeScanner 找到
我的方法的结果总是相同的,一个空字符串。 我认为原因是变量范围,但我不知道如何解决这个问题。
最佳答案
原因是 window.plugins.barcodeScanner.scan
方法异步执行 - 在该方法返回之前不会调用成功回调。
我建议从您的方法中返回一个 Promise
对象,例如(以 jQuery 为例):
var result = $.Deferred();
window.plugins.barcodeScanner.scan(
function(result) {
if (!result.cancelled){
result.resolve(result.text);
}
},
function(error) {
result.reject(error);
}
);
return result;
关于javascript - 如何在用作参数的函数中设置 Javascript 中的局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12121332/