tal/luals/TAL/library/mod/promise.lua

51 lines
1.5 KiB
Lua
Raw Normal View History

2025-02-06 00:30:52 +00:00
--- @meta promise
--- @alias promise<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> promiselib | { when: fun(ful: fun(p1: T1, p2: T2, p3: T3, p4: T4, p5: T5, p6: T6, p7: T7, p8: T8, p9: T9, p10: T10), rej: fun(err)) }
--- @class promiselib
2025-02-06 16:09:07 +00:00
local promise = {};
2025-02-06 00:30:52 +00:00
promise.__index = promise;
--- @generic T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
--- @param on_ful? fun(p1: T1, p2: T2, p3: T3, p4: T4, p5: T5, p6: T6, p7: T7, p8: T8, p9: T9, p10: T10)
--- @param on_rej? fun(err: any)
function promise:when(on_ful, on_rej) end
--- @generic T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
--- @param self promise<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
--- @returns T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
function promise:await() end
--- @generic T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
--- @param func fun(ful: fun(v: T1, v: T2, v: T3, v: T4, v: T5, v: T6, v: T7, v: T8, v: T9, v: T10), rej: fun(val: any))
--- @return promise<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
function promise.mk(func) end
--- @generic T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
--- @param p1? T1
--- @param p2? T2
--- @param p3? T3
--- @param p4? T4
--- @param p5? T5
--- @param p6? T6
--- @param p7? T7
--- @param p8? T8
--- @param p9? T9
--- @param p10? T10
--- @return promise<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
function promise.resolve(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) end
--- @param err any
--- @return promise<any>
function promise.reject(err)
return promise.mk(function (_, rej)
if err and type(err.when) == "function" then
err:when(rej, rej);
else
rej(err);
end
end);
end
return promise;