【发布时间】:2016-08-22 14:15:00
【问题描述】:
我在理解回调如何工作时遇到了一些问题。 我正在编写一个必须验证用户输入的函数。 在函数内部,我必须对我的 API 进行 HTTP GET 调用,以根据用户输入执行检查。
问题是验证函数是从流程函数中调用的,而提交函数是在我在 validate() 中进行的 HTTP 调用之前调用的。 我无法编辑进程函数,因为它是其他组件使用的函数。
form.process = function(){
// do stuffs
validate();
submit();
}
form.validate = function () {
// lots of checks regarding the model
...
// HTTP GET call
}
是否可以让提交函数等到 validate() 中的 HTTP GET 调用结束?
提前致谢:)
【问题讨论】:
-
您的
validate函数是否返回任何deferred或promise? -
如果您无法编辑
process,那么您就不走运了。 HTTP 请求始终是异步的,因此submit()将在 HTTP 请求返回之前运行。 (好吧,显然you can make them synchronous 但它会使浏览器挂起。) -
我很困惑...为什么不能编辑进程函数?它在调用 validate 函数,所以即使其他组件在使用 process 函数,它仍然在调用 validate 函数,如果不起作用,那么当其他组件调用它时,它也不起作用......
-
嗯,这没有意义 :) 你的
process()函数没有按照你的意愿工作,所以你必须改变它
标签: javascript angularjs asynchronous callback asynccallback