Mercurial > prosody-hg
comparison util/async.lua @ 10291:7b48b620164c
util.async: Add function for waiting on promises and unpacking the results
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 29 Sep 2019 18:42:35 +0200 |
| parents | acf74ad0b795 |
| children | 79faf5b98395 |
comparison
equal
deleted
inserted
replaced
| 10290:b2ce3300f26a | 10291:7b48b620164c |
|---|---|
| 244 | 244 |
| 245 local function ready() | 245 local function ready() |
| 246 return pcall(checkthread); | 246 return pcall(checkthread); |
| 247 end | 247 end |
| 248 | 248 |
| 249 local function wait(promise) | |
| 250 local async_wait, async_done = waiter(); | |
| 251 local ret, err = nil, nil; | |
| 252 promise:next( | |
| 253 function (r) ret = r; end, | |
| 254 function (e) err = e; end) | |
| 255 :finally(async_done); | |
| 256 async_wait(); | |
| 257 if ret then | |
| 258 return ret; | |
| 259 else | |
| 260 return nil, err; | |
| 261 end | |
| 262 end | |
| 263 | |
| 249 return { | 264 return { |
| 250 ready = ready; | 265 ready = ready; |
| 251 waiter = waiter; | 266 waiter = waiter; |
| 252 guarder = guarder; | 267 guarder = guarder; |
| 253 runner = runner; | 268 runner = runner; |
| 269 wait = wait; | |
| 254 }; | 270 }; |
