在函数之前访问它自己的对象属性 returns

Accessing its own object properties before function returns

在下面的代码中,forEach 循环中的匿名函数 运行 能够在其第一个 运行-through 中调用 subscription.dispose(),在 buttonClicks.forEach(..) 已将订阅对象返回给 subscription 变量。

forEach(..) 如何在 forEach 完成 运行ning 至少一次之前访问它 returns 的对象?

function(button) {
    var buttonClicks = Observable.fromEvent(button, "click");

    // In the case of an Observable, forEach returns a subscription object.
    var subscription =
        buttonClicks.
            forEach(function(clickEvent) {
                alert("Button was clicked. Stopping Traversal.");

                // Stop traversing the button clicks
                subscription.dispose();
            });
}

变量 subscription 已经声明。

会在forEachreturns之后初始化,在此之前是undefined.

因此点击处理程序可以引用该变量。它不能做的实际上是调用 dispose,因为它需要那个变量来保存一个值(但这不会发生,直到有人点击,然后 forEach 早就返回并且变量被赋值).

请注意,Observable#forEach 不会立即 运行 您传递给它的函数(与 Array#forEach 不同)。函数是 运行 每次 observable 发出一个值(这里:发生点击)。

另请注意,您稍后可以将 subscription 分配给其他对象,它会调用 dispose。它并没有真正绑定到 forEach 返回的对象。单击处理程序将继续引用 变量,而不是变量创建时的