[問題] wait until change

看板Ajax作者 (屁孩)時間6年前 (2018/07/19 00:07), 編輯推噓2(2015)
留言17則, 5人參與, 6年前最新討論串1/1
最近在用node.js寫一個小工具,他會去call某個api,然而似乎他那邊有限制一定時間內 最多call幾次,因此我自己寫了個簡單的cache(附一)。 可是發現當有多個人在差不多的時間連進來的時候,我還是會call很多次,因為前面call 的東西還沒有存進cache裡面(每call一次api約花費一秒),導致後來的人因為次數的上 限拿不到資料,想問有辦法讓我做到先註冊一下我要放東西到cache,之後一拿到再分給 每個需要的人嗎? *附一 const MyCache = function() { let dataStore = {}, CACHED_TIME = 600000; return { setCacheTime: function(time) { CACHED_TIME = time; }, check: function(key) { if(typeof dataStore[key] === 'undefined') return false; const curTime = new Date(); if(curTime - dataStore[key].updTime >= CACHED_TIME) { delete dataStore[key]; return false; } return true; }, get: function(key) { return dataStore[key].value; }, update: function(key, data) { const curTime = new Date(); dataStore[key] = { 'updTime': curTime, 'value': data }; } } } p.s. 不知道原生的Proxy可不可以做到setcahcetime之類的效果QQ -- 我還沒說完吶~~ 夠多了夠多了,回家啦~!     \ /     ○     ︵ \○╱/|     . . ﹎ ﹍﹍ ╱ ̄﹚╱> (原PO被拖走了....) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.102.192 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1531930030.A.548.html

07/19 01:12, 6年前 , 1F
用 promise 阿,如果有 promise 你要資料時正在執行
07/19 01:12, 1F

07/19 01:12, 6年前 , 2F
就大家一起等他一個
07/19 01:12, 2F

07/19 01:13, 6年前 , 3F
把你的data直接換成promise,然後當成立刻成功就好
07/19 01:13, 3F

07/19 01:54, 6年前 , 4F
你是說get那邊改成回傳promise?可是我要怎麼做到有東西的
07/19 01:54, 4F

07/19 01:54, 6年前 , 5F
時候才回傳?
07/19 01:54, 5F

07/19 06:56, 6年前 , 6F
可以加async await 嗎?
07/19 06:56, 6F

07/19 10:10, 6年前 , 7F
(async ()=>{}).then((async ()=>{}))
07/19 10:10, 7F

07/19 10:10, 6年前 , 8F
(async ()=>{}).then(()=>(async ()=>{}))
07/19 10:10, 8F

07/19 10:35, 6年前 , 9F
Promise.resolve({})
07/19 10:35, 9F

07/19 10:35, 6年前 , 10F
Promise.All([])
07/19 10:35, 10F

07/19 10:36, 6年前 , 11F
大概就這些吧
07/19 10:36, 11F

07/19 12:11, 6年前 , 12F
另外cache應該可以用new Map()去做
07/19 12:11, 12F

07/19 14:35, 6年前 , 13F
是說cache那邊開個東東接Promise嗎?
07/19 14:35, 13F

07/19 23:34, 6年前 , 14F
我會寫成這樣
07/19 23:34, 14F

07/19 23:34, 6年前 , 15F

07/20 00:55, 6年前 , 16F
感謝樓上,這種方式我也有想過,但其實有一部分是我自己又
07/20 00:55, 16F

07/20 00:56, 6年前 , 17F
封裝出一些功能(運算那個也有久),不太好統一(?會考慮看看
07/20 00:56, 17F
文章代碼(AID): #1RJsMkL8 (Ajax)
文章代碼(AID): #1RJsMkL8 (Ajax)