gpt4 book ai didi

javascript - 单个值的 Observable 与 Promise

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:25:16 25 4
gpt4 key购买 nike

Typescript(现在还有 ECMAScript 2017)以 async/await 的形式为您提供了很棒的异步工具。然而,在使用 Angular 4 时,我觉得使用 Observables 是首选。我的问题是:当我有一个函数返回一次单个值(例如:确认模式)时,使用可观察对象有什么大的优势,或者 promise (async/await)是首选/只是一样好?使用 observables 不是很奇怪吗?它们不代表值(value)流吗?

我;博士:

async showDialog(msg: string): Promise<DialogResult>

对比

showDialog(msg: string): Observable<DialogResult>

最佳答案

使用哪一个并不重要。 Promises 和 Observables 可以自由互换。看看这个https://medium.com/@benlesh/rxjs-observable-interop-with-promises-and-async-await-bebb05306875

我个人发现使用 Observables 更容易,即使您只需要返回一个值。

对于 Promises,您通常需要保留三个属性:

class Whatever {
resolve: Function;
reject: Function;
promise = new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
});

method() {
return this.promise;
}

otherMethod() {
this.resolve();
}
}

使用 Observables 你可以只保留一个 Subject 的实例:

class Whatever {
subject = new Subject();

method() {
return this.subject.toPromise();
}

otherMethod() {
this.subject.next(...);
this.subject.complete();
}
}

关于javascript - 单个值的 Observable 与 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46441944/

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