[英]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插件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;
感謝您的幫助,現在它可以工作了:)
對於所有其他也遇到這些問題的人,解決方案如下所示:
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);
});
}
我已經更改了錯誤代碼並以某種方式取消了,因為我總是得到一個空字符串來處理。 在我的情況下,更多的錯誤處理沒有用。
問候,馬庫斯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.