1 回答

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