2017-04-05 239 views
1

我發現幾個很好的鏈接(How to return value from an asynchronous callback function?Returning a value from callback function in Node.js等)的SO,但他們不能提供解決我的問題。JS:如何使用返回類型的回調函數來返回主被調用函數

我的問題:能夠得到異步調用的結果,但我該如何使用這個結果對我的函數的返回?

onsubmit = "return checkForm(function(callBackResponse) { alert(callBackResponse) });" 

及彼callBackResponse的價值無論是作爲真或假,並希望使用這個值:

onsubmit = "return responseFromCallBack;" 

編輯:這是我的異步東西

function checkForm(callback) {return firstCallBack(function secondCallBack(response) { 
      if (some conditions) { 
       response = false; 
       callback(response); 
      } 
      else { 
       response = true; 
       callback(response); 
      } 
     } 
    ); 
} 

請幫幫我。提前致謝。

回答

0

如果我正確地得到你的問題:
你想「驗證」(checkForm())之前提交?!如果一切正常,則手動觸發提交;)
例如document.getElementById('myFormId').submit()

Cheerio :)

+0

但這裏checkForm()是從異步回調獲得值的同步功能。 – himanshupareek66

+0

這就是爲什麼你防止表單提交做你的異步的東西,並使用異步的successHandler來手動觸發formSubmit;)無論如何多一點代碼 - 尤其是異步的東西會幫助很多:) – MarcelD

+0

@MarceID,編輯問題,請看到異步的東西 – himanshupareek66

0

如果你想使用嵌套函數調用的方法和要檢查函數的結果比你應該使用的功能,並提交表單事件如下。

$(document).ready(function() { 
    $("#FormId").submit(function(){ 
     alert(checkForm()); 
     return checkForm(); 
    }); 
}); 

function checkForm() 
{ 
    //another core logic 
    return anotherfunction(); 
} 

function anotherfunction() 
{ 
    //another core logic than return as per condition true or false. 
    return false; 
} 

JSFiddle Example

+0

但是這裏checkForm()是一個同步函數,它從異步回調中獲取值。 – himanshupareek66