将 javascript 函数作为参数传递 - 这个逻辑是如何工作的?



我不明白下面的 responseHandler 函数在提交付款表单后如何接收来自 API 调用的响应。以下是代码的简要摘要:

var PaymentThing = function(e) {
this["clientCallback"] = e;
return {
createToken: function() {
// HTTP GET URL is generated and then an HTML script element is appended to the page head
var a = "https://example.com/securitytoken?creditcard=xxxx?callback=PaymentThing.callback";
var f = document.createElement("script");
f.src = a;
document.getElementsByTagName("head")[0].appendChild(f)
},
callback: function(e) {
this["clientCallback"](e.status, e.results)
}
}
}

var responseHandler = function(status, response) {
// How does this even work?
console.log(response, status);
}

// Form Submission
jQuery('#checkout_payment_form').submit(function() {
PaymentThing.createToken(responseHandler);
}

所以我的问题是,responseHandler函数如何接收来自HTTP GET调用的响应?在我看来,甚至没有进行HTTP调用。我只看到一个 URL 被添加到 HTML 脚本元素(使用 createToken 函数(,该 URL 甚至从未被调用/执行(但不知何故?另外,当我没有看到(状态、响应(参数被传递到响应处理程序函数调用时,它们是如何传递到响应处理程序函数中的?

我不明白这里的操作逻辑或顺序,任何人都可以解释一下发生了什么吗?

编辑:好的,我想我现在看到响应处理程序函数如何接收状态和响应参数。我编辑了上面的代码,以显示生成的 HTTP url 中有一个回调函数。但是,该 URL 是如何调用的?在我看来,它仍然是惰性的,并且被卡在页面的 HTML 中而无法激活。

我认为如果您运行responseHandler函数并将结果存储在一个变量中,该变量可以作为PaymentThing.createToken()中的参数调用,它会考虑它。

那里的代码都没有调用responseHandler.将其传递给createToken方法没有意义,因为它完全忽略了所有参数。

添加到页面的脚本可能会尝试调用名为responseHandler的全局函数,但如果不检查脚本就无法分辨。

最新更新