我正在学习JavaScript - 真正学习JavaScript.我来自PHP背景,所以一些JavaScript概念对我来说仍然是新的,尤其是异步编程.这个问题可能已经多次回答,但我找不到答案.这可能是因为我甚至不知道如何通过展示一个例子来提出问题.所以这里是:
从npm 使用deferred包时,我看到以下示例:
delayedAdd(2, 3)(function (result) {
return result * result
})(function (result) {
console.log(result); // 25
});
Run Code Online (Sandbox Code Playgroud)
他们将此称为链接,它实际上是有效的,因为我目前正在使用此代码来检查承诺何时解决或被拒绝.即使他们称之为链接,它也会让我想起像Swift那样的尾随闭包.
我真的不明白这是什么类型的链接,因为我们有一个函数调用,然后紧接着,括在括号中的匿名函数.
所以我想我有两个问题.
这是delayedAdd函数:
var delayedAdd = delay(function (a, b) {
return a + b;
}, 100);
Run Code Online (Sandbox Code Playgroud)
它使用以下功能:
var delay = function (fn, timeout) {
return function () {
var def = deferred(), self = this, args = arguments;
setTimeout(function () {
var value;
try {
value = fn.apply(self, args));
} catch (e) {
def.reject(e);
return; …Run Code Online (Sandbox Code Playgroud)