gpt4 book ai didi

javascript - 奇怪的 javascript 语法 return {unsubscribe() {}};

转载 作者:行者123 更新时间:2023-11-30 20:21:27 25 4
gpt4 key购买 nike

我在 angular tutorial 中发现了奇怪的结构.返回部分发生了什么?代码块内的函数调用后跟空对象?

// This function runs when subscribe() is called
function sequenceSubscriber(observer) {
// synchronously deliver 1, 2, and 3, then complete
observer.next(1);
observer.next(2);
observer.next(3);
observer.complete();

// unsubscribe function doesn't need to do anything in this
// because values are delivered synchronously
return {unsubscribe() {}};
}

// Create a new Observable that will deliver the above sequence
const sequence = new Observable(sequenceSubscriber);

// execute the Observable and print the result of each notification
sequence.subscribe({
next(num) { console.log(num); },
complete() { console.log('Finished sequence'); }
});

// Logs:
// 1
// 2
// 3
// Finished sequence

最佳答案

您说代码 return {unsubscribe() {}}; 是“代码块内的函数调用,后跟空对象”;那是不正确的。

实际发生的是函数 sequenceSubscriber 返回一个 Object,其属性为名为“unsubscribe”的函数。该功能什么都不做。这是利用您可以在此处看到的新函数速记:Method definitions

考虑代码:

const foo = {
bar(){}
};

创建一个对象foo,它有一个函数bar,什么都不做。

为什么这样做的原因是为了实现 Rx 为 Observables 定义的接口(interface)契约以及定义在 Subscription 中的接口(interface)tc39/proposal-observable :

interface Subscription {

// Cancels the subscription
unsubscribe() : void;

// A boolean value indicating whether the subscription is closed
get closed() : Boolean;
}

关于javascript - 奇怪的 javascript 语法 return {unsubscribe() {}};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51409146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com