2017-04-05 236 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