簡體   English   中英

在Javascript Promise中返回'resolve'函數

[英]Returning 'resolve' function in Javascript Promise

我在這個博客中發現了一段完美無缺的代碼,但是使用了很難理解的Promise

export class Mutex {
  private mutex = Promise.resolve();

  lock(): PromiseLike<() => void> {
    let begin: (unlock: () => void) => void = unlock => {};

    this.mutex = this.mutex.then(() => {
      return new Promise(begin);
    });

    return new Promise(res => {
      begin = res;
    });
  }

  async dispatch(fn: (() => T) | (() => PromiseLike<T>)): Promise<T> {
    const unlock = await this.lock();
    try {
      return await Promise.resolve(fn());
    } finally {
      unlock();
    }
  }
}
  • 表達式是否有效new Promise(res => { begin = res; }) 承諾通常涉及調用resolve 的東西

  • 為什么const unlock = await this.lock(); 解決一個功能?

這是一個有效的表達嗎? 承諾通常涉及對某事做出決定......

是的,它將resolve函數存儲在global begin變量中。 然后當new Promise(begin)執行時,它調用begin函數並因此解析它。

為什么const unlock = await this.lock(); 解決一個功能?

因為begin由被稱為new Promise與新的承諾的決心功能( begin(resolve, reject) )。 由於begin是一個解析器本身,它會將返回的Promise解析為另一個promise的解析器函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM