Promise自己知道被await或者被then,catch了嗎?

時間 2021-09-09 02:09:53

1樓:NaN

PromiseLike完全可以知道,因為.then是乙個函式,你呼叫的時候就會知道了嘛。比如乙個惰性求值物件就可以是Promiselike,等到他自己被await/then的時候再去求值。

但是通過Promise建構函式建立的Promise物件不是惰性的,傳入的「執行函式」會在Promise物件建立時就被執行,因此「那個執行函式」並不知道這個Promise有沒有被await/then。

另外,非同步函式也不是惰性的,無論是否被await/then,非同步函式都會被執行。

所以如果你遇到惰性行為,那麼你大概率拿到的是PromiseLike,而不是Promise。這個時候如果你開了typescript的話看一下型別就能知道了。

就我個人來說我覺得Promise和Lazy應該是兩個東西,我認為不應該用PromiseLike介面來實現Lazy,如果需要的話,tc39應該為Lazy另外準備語法。

2樓:陳倬

知道。await = 隱式呼叫 Promise.prototype.then;

promise object 到達 fulfilled 或 rejected 狀態,需要主動呼叫相關的 resolve 或 reject handler,如果事先有被註冊的話。

你的場景裡,也許 return this.dynamicService() 就可以。

3樓:謝然

理論上來說,知道,因為await就相當於呼叫了then,而呼叫例項的方法,例項當然知道,並且付進去的函式還被儲存下來了,以備後續promise狀態確定時呼叫

重新看了一下問題,我回答的是題目,沒太看題目描述,不過單就問題標題來說,乙個物件當然知道自己的乙個方法被呼叫了,就是這樣。

被暗戀的人知道自己被暗戀麼?

我初中的時候被乙個男生暗戀,就是那種你會明顯的感覺到他在盯著你看,或者一跟你打照面就可不自然了,記得有一次剛從洗手間出來,看見樓道裡貼的那種書法字畫沒粘好,我就去按了一下把它粘牢一些,就剛好被他看見了,然後就是我和別的男生說話他就會故意過來和那個男生說話,融入話題,反正看起來很刻意,因為不喜歡那個男...

粒子如何知道自己被觀察?

庄建西 人在觀察粒子的時候,人的客觀意識一種意識能就作用到這個粒子了,粒子在意識能的作用下發生變化。中醫就常有 意到,力到,效果到 的觀念。中國哲學的宇宙觀是 宇宙起源於混沌 混沌物質就是自由運動的能量叫元氣,元氣操控分子形成乙個系統就是生命。元氣是生命的靈魂,是一種客觀意識。人開始觀察粒子的時候,...

粒子是如何知道自己被觀測了?

抽屜 觀測是會產生影響的。比如你用一把尺子量一條線。你如果離得近了,會對物體有壓力,壓力會導致變形,離得遠了,就會不准。在粒子這個尺度上,這個影響更大,更影響結果。 武夢現 細 說一下。粒子其實也是一種能量體,周圍也有磁場,肯定也會受到能量擾動。當你看粒子的時候,粒子也在看你 你是如何知道自己在看粒...