mirror of
https://github.com/kevinhwang91/promise-async
synced 2024-09-16 21:34:05 +02:00
refactor(error): pop xpcall stack obviously
This commit is contained in:
parent
038d05664f
commit
407880a65e
2 changed files with 14 additions and 4 deletions
|
@ -66,8 +66,9 @@ end
|
|||
|
||||
---@param startLevel? number
|
||||
---@param skipShortSrc? string
|
||||
---@param doPop? boolean
|
||||
---@return PromiseAsyncError
|
||||
function Error:buildStack(startLevel, skipShortSrc)
|
||||
function Error:buildStack(startLevel, skipShortSrc, doPop)
|
||||
local level = startLevel or 1
|
||||
local value
|
||||
local thread = coroutine.running()
|
||||
|
@ -80,7 +81,9 @@ function Error:buildStack(startLevel, skipShortSrc)
|
|||
level = level + 1
|
||||
self:push(value)
|
||||
end
|
||||
table.remove(self.queue)
|
||||
if doPop then
|
||||
self:pop()
|
||||
end
|
||||
return self
|
||||
end
|
||||
|
||||
|
@ -130,6 +133,11 @@ function Error:push(value)
|
|||
return #self.queue
|
||||
end
|
||||
|
||||
---@return string
|
||||
function Error:pop()
|
||||
return table.remove(self.queue)
|
||||
end
|
||||
|
||||
---@return any
|
||||
function Error:peek()
|
||||
return self.err
|
||||
|
|
|
@ -123,8 +123,9 @@ local function handleQueue(promise)
|
|||
return func(result)
|
||||
end, function(errmsg)
|
||||
if type(errmsg) == 'string' then
|
||||
-- pop xpcall stack
|
||||
newPromise.err = errFactory:new(errmsg)
|
||||
:buildStack(3, shortSrc)
|
||||
:buildStack(3, shortSrc, true)
|
||||
return tostring(newPromise.err)
|
||||
end
|
||||
return errmsg
|
||||
|
@ -180,8 +181,9 @@ local function wrapExecutor(promise, executor, self)
|
|||
end
|
||||
end, function(errmsg)
|
||||
if type(errmsg) == 'string' then
|
||||
-- pop xpcall stack
|
||||
promise.err = errFactory:new(errmsg)
|
||||
:buildStack(3, shortSrc)
|
||||
:buildStack(3, shortSrc, true)
|
||||
return tostring(promise.err)
|
||||
end
|
||||
return errmsg
|
||||
|
|
Loading…
Reference in a new issue