- 45
- 2
- Версия MoonLoader
- .026-beta
Мне нужно заполнить таблицу делая запросы в цикле, но запрос приходит не сразу и часто бывает timeout можно ли как то сделать проверку на получение ответа от запроса и сделать повторный запрос если получил timeout
Lua:
if imgui.Button(u8'Обновить список') then
numbers = {}
maxs = sampGetMaxPlayerId()
for i=0, maxs do
if sampIsPlayerConnected(i) then
nickname = sampGetPlayerNickname(i)
asyncHttpRequest('POST', 'http://url/script.php', { data = string.format('method=passport&nickname=%s&server=%s', nickname, ServH),
headers = {
["content-type"] = "application/x-www-form-urlencoded"}},
function(response)
pass = decodeJson(response.text)
if pass.id ~= nil and pass.phone ~= nil and pass.phone ~= '0' then
phones = pass.phone
numbers[i] = phones
print(numbers[i])
else
sampAddChatMessage('Номера нету в базе', -1)
end
end,
function(err)
print(err)
end)
end
end
end
function asyncHttpRequest(method, url, args, resolve, reject)
local request_thread = effil.thread(function (method, url, args)
local requests = require 'requests'
local result, response = pcall(requests.request, method, url, args)
if result then
response.json, response.xml = nil, nil
return true, response
else
return false, response
end
end)(method, url, args)
if not resolve then resolve = function() end end
if not reject then reject = function() end end
lua_thread.create(function()
local runner = request_thread
while true do
local status, err = runner:status()
if not err then
if status == 'completed' then
local result, response = runner:get()
if result then
resolve(response)
else
reject(response)
end
return
elseif status == 'canceled' then
return reject(status)
end
else
return reject(err)
end
wait(0)
end
end)
end
Последнее редактирование: