1 回答
TA貢獻2041條經驗 獲得超4個贊
好吧,在我自己進行了一些進一步的研究之后,我放棄了對此用例使用Promises的方式,而是使用RxJS的Observables。
盡管我必須進行一些細微的修改,但它幾乎可以按照我想要的方式解決了我的問題。
對于那些偶然發現我的問題并為我面臨的同樣問題尋求解決方案的人:
承諾只能被解決或拒絕一次,據我所知,除非Promises函數完成運行,否則您無法使用相同的代碼創建一個新的(如果我對此代碼有誤,請更正我,我真的很感激,這只是基于我個人的觀察和猜測),除非您創建了一個全新的Promise,否則您將無法再次解決它。
在這種情況下,我們將根據偵聽器(或js中所謂的內容)做出Promise,因此,除非刪除偵聽器,否則答應中扭曲的函數將無法完成運行(我認為),并且您不會創建一個新的Promise。
另一方面,Observables可以根據需要進行多次重用,有關此內容可在Promises和Observables之間進行比較,請參見此內容,這是一個很好的教程,可以幫助您了解Observables以及如何使用它們。見這對如何安裝RxJS節點。
但是,請注意-由于某種原因,一旦您訂閱了一個observable,傳遞給observable.subscribe()的函數中使用的變量將保持不變,它不會隨著您對觀察者路由的每個新請求而更新。因此,除非找到一種方法將可更改的變量傳遞到可觀察的定義內的observer.next()函數中,否則您將得到錯誤的結果。
添加回答
舉報
