如何在我用作参数的函数中设置Javascript中的本地变量
How can i set a local Variable in Javascript in a function i used as parameter?
我在Android应用程序中使用Phonegap的Barcodescannerplugin的Javascript中遇到了一个问题。
我使用的插件带来了一个小Javascript,可以在我的Phongap应用程序中使用Barcodescanner。但在我看来,所提供的javascript函数的接口并不是最佳的,因为我不想在使用这些方法的每个位置都进行错误处理。
这就是为什么我试图让这个界面更容易的原因,我只需要调用一个方法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/BackodeScanner
我的方法的结果总是一样的,是一个空字符串。我认为原因是范围可变,但我不确定如何解决问题。
原因是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;
感谢您的帮助,现在它可以工作了:)
对于所有其他也有这些问题的人来说,解决方案看起来是这样的:
function scanBarcode(){
var resultObject = $.Deferred();
window.plugins.barcodeScanner.scan(
function(result) {
if (!result.cancelled){
resultObject.resolve(result.text);
} else {
resultObject.resolve('');
}
},
function(error) {
resultObject.resolve('');
}
);
return resultObject;
}
现在,只需说:就可以很容易地获得扫描值
function clickScanBarcode(){
var result = scanBarcode();
result.done( function(text){
alert('Barcodetext:'+text);
});
}
我已经更改了错误代码,并以这种方式取消了,我总是得到一个空字符串来处理。对我来说,更多的错误处理是没有用的。
问候,Marcus
相关文章:
- 通过Javascript设置Telerik RadTreeView属性,如OnClientNodeExpanded
- 使用javascript设置iframe的高度
- 通过JavaScript设置表单目标
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 如何在Internet Explorer中使用javascript设置cookie
- Javascript设置日期不起作用,显示错误的时间
- iOS Safari Javascript设置超时问题
- 使用Javascript设置库中图像包装器的宽度
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何使用javascript设置元素旋转和动态观察的动画
- 在 PHP 块中使用 Javascript 设置 HTML 文本框的值(使用 echo)
- 通过javascript设置IE特定的css样式
- Javascript-设置cookie并拉入ID
- ASP从Javascript设置控件值
- 尝试使用window.innerHeight和Javascript设置图像高度
- 使用JavaScript设置整个页面的字体大小
- 使用纯Javascript设置最小高度属性
- 如何通过javascript设置支柱列表2
- 使用 JavaScript 设置 的点击