![](/img/trans.png)
[英]Difference between returning a value and returning Promise.resolve() from a function
[英]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.