多次promise請求,怎樣使用最後請求響應的資料?

時間 2021-05-29 23:04:11

1樓:assmdx

1.很多promise並行執行,使用Promise.all(...).then處理

2. 很多Promise線性執行,使用Array.reduce轉為線性執行,拿到最後結果處理

2樓:LGTM

不好意思,原回答有點輕浮,先回答答主問題。

可以簡單理解成,你在做搜尋的功能嗎?如果不是請指正。

如果是:

防抖/節流一下,不要每一次都去請求api。

對於這種get請求,其實本地wrap乙個id就行,這個id並不需要發去伺服器。

const searchFunc = async (searchText) =>

let requestId = 0;

let responseMaxId = 0;

requestId += 1;

const thisPromiseRequestId = requestId;

cosnt result = await func(searchText);

if (responseMaxId > thisPromiseRequestIdignore this promise result

returnresponseMaxId = thisPromiseRequestId;

// render the result data

};}您看看這個是否符合或者滿足您的要求。

想說說自己的觀點。http亂序問題。

先假設get請求是讀資料,post 和 put才會改資料,就是restful一點

get很多答案也說了,本地生成乙個id,利用閉包wrap起來,判斷返回的最大id,如果返回的id是小的,直接丟棄。

post和put其實不需要客戶端考慮,但是服務端要考慮。

比如改名字,改成1,再改成2。服務端可能收到的是改成2,再改成1。這樣是不對的。請求要帶上id是必然的了,問題是這個id怎麼生成。

首先不推薦客戶端生成,因為這個id會是乙個global的概念,以後你整個應用都會依賴這個id,不單單改名字這個操作。

伺服器生成,每次客戶端開啟後,都要去伺服器拉一批id下來,然後客戶端每個請求都應該帶上這個id,伺服器就會知道怎麼做了。

關於怎麼生成這個id,研究得不是很深,但是用redis生成應該能撐起一定的服務了。注意要容災,比如redis生成到15764這個id,囧機了還沒下磁碟,下次生成的id要從20000生成。其實這裡就是以10000為標準,每次重啟都應該是這個數的倍數。

而且每到這個數的倍數的時候一定要下磁碟。

這裡有兩個問題,

怎麼保證每到這個數一定下到磁碟了

怎麼判斷服務是重新開機了。

當然改名字可以設定成序列,加個timeout就好。

3樓:XinPeng

letsearchIndex=0

;function

createSearchReq

(res

,delay

)else

);};

},delay

);});

};function

search();

search

();用乙個變數儲存promise執行的順序,不知道這樣滿足不

nginx是在接收請求的時候使用epoll還是在處理的時候使用,還是說都使用?

小板凳 不知道fpm,沒看過原始碼 1 這裡的 nginx 呼叫 epoll 管理的是從客戶端請求過來的 fd 嗎?是的 2 還是說 nginx 和 fpm 通訊時建立的 socket 查了一下fpm是cgi相關的東西?nginx和本地服務的通訊方式一般都是 呼叫 如果建立socket的話,我猜測大...

乙份借款合同能多次使用嘛?

蒼星零 題主的多次使用是指哪方面的?首先,若是用於企業經營那是有法律風險的。企業若是以借貸為主營業務,可能會涉及到刑事責任 例如若向不特定的物件吸收存款可能構成 非法吸收公眾存款罪 若向企業經常性的發放貸款則可能構成 非法經營罪 當然若是個別的 偶爾的情況也是可以的,但要謹慎處理。因此這份借款合同是...

失敗太多次會怎樣?

星空下的愛戀 你不要這樣想人這一生活著才是最重要的 最重要的東西你已經有了剩下的東西都是錦上添花可有可無 駕照考不過就考不過了 5次不過就考10次 10次不行就20次實在不行不考了行不行?最多10年自動駕駛無人駕駛技術成熟了駕照有個屁用?考試今年失敗了明年再考明年考不過後年考還考不過就不考了行不行?...