magmastonealex
magmastonealex

Reputation: 426

PhoneGap BarcodeScanner causing iOS app to hang

I've got a working PhoneGap app that I'm trying to add a QR scanner to. To do this, I'm using PhoneGap Build's BarcodeScanner plugin. The issue that I'm having is that upon a scan completing, an alert will cause the app to freeze.

The relevant JavaScript is

var options=""
options += '<p>'+formData["form"][formPart][1]+'</p>'
options += '<a data-role="button" data-rel="dialog" formPart="'+formPart+'"id="Cap-'+formPart+'">Capture Image</a>'
options += '<p id="Cap-Data"></p>'
$('#formContent').append(options);
$('#Cap-'+formPart).on("tap",function(event){
var scanner = cordova.require("cordova/plugin/BarcodeScanner");
scanner.scan(
 function (result) {
  var FP = $(this).attr("formPart");
  $('#Cap-Data').html(result.text);
   alert(result.text);
  }, 
  function (error) {
   alert("Scanning failed: " + error);
  }
 );
});

Any help on this would be much appreciated.

Upvotes: 1

Views: 972

Answers (1)

keune
keune

Reputation: 5795

The problem is functions like alert or prompt stop the execution completely until they return. Try putting the alert code in setTimeout() No timeout needed though, you can set it to 0 ms. so it will immediately occur but won't block the flow.

setTimeout(function() {
  alert(result.text);
}, 0);

This question might be a good read about why setTimeout(fn, 0) helps in these situations.

Upvotes: 4

Related Questions