首頁 > web前端 > js教程 > 主體

Observable 與 Promise

DDD
發布: 2024-11-27 21:22:11
原創
374 人瀏覽過

Observable v/s Promise

*Observables * 和*Promises * 都用於處理JavaScript 中的非同步操作,但它們有一些關鍵區別:

承諾

  • 單一值:Promise 處理單一非同步事件並傳回單一值(或錯誤)。
  • Eager:Promise 在創建後立即開始執行。
  • 不可取消:Promise 一旦發起,就無法取消。
  • 語法:使用 .then()、.catch() 和 .finally() 進行連結操作。

範例:

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('Promise resolved!');
  }, 1000);
});

promise.then((value) => {
  console.log(value);
});
登入後複製

可觀察值

  • 多個值:Observables 可以隨著時間的推移發出多個值。
  • 惰性:Observables 在被訂閱之前不會開始發出值。
  • 可取消:可以取消 Observables 的訂閱,從而停止傳送值。
  • 語法:使用 .subscribe() 處理發出的值、錯誤和完成。

範例:

import { Observable } from 'rxjs';

const observable = new Observable((subscriber) => {
  subscriber.next('First value');
  setTimeout(() => {
    subscriber.next('Second value');
    subscriber.complete();
  }, 1000);
});

const subscription = observable.subscribe({
  next(value) {
    console.log(value);
  },
  complete() {
    console.log('Observable complete');
  }
});

// To cancel the subscription
subscription.unsubscribe();
登入後複製

何時使用每個

  • 當您需要處理單一非同步操作時,請使用 Promise。
  • 當您需要隨著時間的推移處理多個非同步事件或值時,以及當您需要對資料流進行更多控制(例如取消、轉換)時,請使用 Observables。

以上是Observable 與 Promise的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板