diff --git a/source/resources/backend.ts b/source/resources/backend.ts index 14d0ee7..43d7543 100644 --- a/source/resources/backend.ts +++ b/source/resources/backend.ts @@ -127,16 +127,7 @@ namespace _dali.backend /** */ - var _queue : { - items : Array< - { - request : type_request; - resolve : ((result : any) => void); - reject : ((reason : any) => void); - } - >; - busy : boolean; - }; + var _queue : lib_plankton.call.type_queue; /** @@ -160,10 +151,9 @@ namespace _dali.backend ) */ ); - _queue = { - "items": [], - "busy": false, - }; + _queue = lib_plankton.call.queue_make( + call_real + ); return Promise.resolve(undefined); } @@ -263,59 +253,17 @@ namespace _dali.backend && (http_response.status_code < 300) ) - ) { + ) + { return Promise.reject(http_response.body.toString()); } - else { + else + { const output : any = lib_plankton.json.decode(http_response.body.toString()); return Promise.resolve(output); } } - - /** - */ - async function process( - ) - : Promise - { - if (_queue.busy) - { - // do nothing - } - else - { - _queue.busy = true; - while (_queue.items.length > 0) - { - const entry = _queue.items.shift(); - let successful : boolean; - let reason : any; - let result : any; - try - { - result = await call_real(entry.request); - successful = true; - } - catch (error) - { - reason = error; - successful = false; - } - if (successful) - { - entry.resolve(result); - } - else - { - entry.reject(reason); - } - } - _queue.busy = false; - // process(); - } - } - /** */ @@ -331,19 +279,18 @@ namespace _dali.backend "action": action, "input": input, }; - const promise : Promise = new Promise( - (resolve, reject) => { - _queue.items.push( - { - "request": request, - "resolve": resolve, - "reject": reject, - } - ); - } + return ( + new Promise( + (resolve, reject) => { + lib_plankton.call.queue_add( + _queue, + request, + resolve, + reject + ); + } + ) ); - process(); - return promise; }