簡體   English   中英

如何在JavaScript中使用回調函數

[英]How to use callback function in javascript

我正在將此代碼構建到馬蹄鐵Web服務。 現在,我希望該方法返回一個對象。

因此,這是調用該方法的命令:

Titanium.API.info("CHIAMO IL WS CON DATA NULL");
getDocument("CFDECTEST02",null, function(obj) {
   Titanium.API.info("CALL BACK CHIAMATA "+ obj);
});

這是調用Web服務的方法:

function getDocument(fiscalCode, date){
    var obj;
    var xhr = Titanium.Network.createHTTPClient();
    xhr.setTimeout(10000);
    xhr.open('POST', "http://url");

    xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    var myObject = {
         cf :fiscalCode,
         date_last_synchronization :date 
    };
    xhr.send(JSON.stringify(myObject));

    xhr.onerror = function() {
        Ti.API.info("SERVIZIO IN ERRORE");
        Ti.API.info(this.responseText);
        disattivaSemaforo();
    };
   xhr.onload = function() {
        var obj = JSON.parse(this.responseText);
        Ti.API.info(this.responseText);
        return obj;
    };

}

問題出在回調函數上。 因為方法getDocument可以正確調用Web服務並具有正確的obj,但是未調用回調函數。

您需要第三個參數傳遞給getDocument函數(它將是您的xhr請求的回調函數)

function getDocument(fiscalCode, date, success){
 var obj;
 var xhr = Titanium.Network.createHTTPClient();
 xhr.setTimeout(10000);
 xhr.open('POST', "http://url");

 xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");
 var myObject = {
     cf :fiscalCode,
     date_last_synchronization :date 
 };
 xhr.send(JSON.stringify(myObject));

  xhr.onerror = function() {
    Ti.API.info("SERVIZIO IN ERRORE");
    Ti.API.info(this.responseText);
    disattivaSemaforo();
 };


 xhr.onload = xhr.onload = function() {
    var obj = JSON.parse(this.responseText);
    Ti.API.info(this.responseText);
    success(obj);
 };

}

然后,您可以像以前一樣調用getDocument函數

getDocument("CFDECTEST02",null, function(obj) {
  Titanium.API.info("CALL BACK CHIAMATA "+ obj);
});

您將其視為任何其他函數和任何其他參數。

您將其作為第三個參數傳遞給getDocument ,但尚未在該函數中為其命名:

 function getDocument(fiscalCode, date){ 

應該:

function getDocument(fiscalCode, date, callback) {

然后,您只需要調用它:

var obj = JSON.parse(this.responseText);
callback(obj);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM