| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
你可以使用async.lua来管理回调函数, 避免在callback hell里沉沦, 减少心智负担.
You can use async.lua to manage your callback functions, avoid sinking in callback hell, and reduce mental burden.
瀑布流执行 - 按顺序执行任务,每个任务的结果会传递给下一个任务。
参数:
示例:
async.waterfall({
function (callback)
callback(nil, 1, 2)
end,
function (callback, a, b)
print(a, b) -- 输出: 1, 2
callback(nil, 3)
end,
function(callback, a)
print(a) -- 输出: 3
callback(nil, 4)
end
},
function (err, result)
if err then
print('error:', err)
else
print(result) -- 输出: 4
end
end)并行执行任务,可选择性地限制最大并行数量。
参数:
返回值:
示例 1 - 默认并行数:
async.parallel({
function (callback)
callback(nil, 'task1')
end,
function (callback)
callback(nil, 'task2')
end,
function (callback)
callback(nil, 'task3')
end
},
function (err, results)
if err then
print('error:', err)
else
-- results = {{'task1'}, {'task2'}, {'task3'}}
for i, result in ipairs(results) do
print(result[1])
end
end
end)示例 2 - 指定最大并行数:
-- 最多同时执行 2 个任务
async.parallel(2, {
function (callback)
callback(nil, 'A')
end,
function (callback)
callback(nil, 'B')
end,
function (callback)
callback(nil, 'C')
end,
function (callback)
callback(nil, 'D')
end
},
function (err, results)
if err then
print('error:', err)
else
print('all tasks completed')
end
end)注意:
所有回调函数的第一个参数都是错误对象 err:
-- 错误示例
async.waterfall({
function (callback)
callback('something went wrong')
end,
function (callback)
-- 这个函数不会被执行
callback(nil, 'result')
end
},
function (err, result)
if err then
print('error occurred:', err) -- 输出: error occurred: something went wrong
end
end)lua test.lua| Back | FazBrowse Home | New Git URL |