显示加载图像直到响应

Posted

技术标签:

【中文标题】显示加载图像直到响应【英文标题】:Show loading image until response 【发布时间】:2021-02-24 16:12:08 【问题描述】:

我通过 AlamoFire 向 REST API 发送音频文件并获得 JSON 响应。同时,我想显示加载图像(例如动画圆圈),直到收到响应。我目前的解决方案是:

let voiceData = try? Data(contentsOf: audioRecorder.url)
let uploadUrl = "<server ip>"
    
AF.upload(multipartFormData:  multipartFormData in
   multipartFormData.append(voiceData!, withName: "file", fileName: "recording.m4a", mimeType: "audio/mpeg")
,
to: uploadUrl, method: .post)
.responseJSON  resp in
    print(resp)

现在如何在我的 SwiftUI 视图中显示加载图像?

【问题讨论】:

这是否回答了您的问题***.com/a/58959008/12299030? 这可能会对您有所帮助:SwiftUI Network Image show different views on loading and error 和 How can I load an UIImage into a SwiftUI Image asynchronously? 【参考方案1】:

我不确定 AlamoFire,但为了并行做两件事,你必须使用异步方法,所以这是你可以做的(在 javascript 中):

document.querySelector("#getInfoBtn").addEventListener('click',() => 
    toggleInfoBtnSpinner()
    setTimeout(AFUpload, 10)
);

let toggleInfoBtnSpinner = () => 
    const btn = document.querySelector("#getInfoBtn")
    const spinner = btn.querySelector("#infoSpinner")

    if (spinner == null) 
        btn.innerhtml = `<span id="infoSpinner" class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>Search`
     else 
        spinner.remove()
        btn.innerHTML = `Search`
    
    btn.disabled = !btn.disabled

这将设置微调器启动,然后,您将在 10 毫秒后作为异步函数执行 AFUpload 函数,您可以触发该函数的某些内容以让系统知道它已完成

【讨论】:

以上是关于显示加载图像直到响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Ajax Toolkit 的情况下显示加载图像直到 gridview 完全加载?

显示启动画面或加载指示器,直到所有图像都准备好 |世博会|反应原生

保存或加载图像时 iPhone 设备的响应时间很慢

我们可以像在 android asyncTask 中一样显示加载状态,直到我们在 swift 中使用 HTTP Post 请求得到响应

线程加载图像更快,直到它们在 Studio 中消失

延迟显示页面,直到所有内容都加载完毕