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
parent 9562:acf74ad0b795
child 10928: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 };