首頁 > 後端開發 > Golang > 如何從承諾內部傳回錯誤?

如何從承諾內部傳回錯誤?

WBOY
發布: 2024-02-09 17:03:08
轉載
1001 人瀏覽過

如何從承諾內部傳回錯誤?

在編寫程式碼時,我們經常需要處理一些可能發生錯誤的情況。然而,有時我們需要在函數或方法內部傳回錯誤,以便在呼叫該函數或方法時能夠正確處理錯誤。在PHP中,我們有幾種方法可以實現這一點。本文將介紹如何從承諾內部傳回錯誤,以幫助開發人員更好地處理錯誤情況。

問題內容

我有一個函數(sendall),如果kgo.produce (文件在這裡)中發生錯誤,我想讓它傳回error 。如何讓它停止循環並返回錯誤?

func (k *buffer) sendAll() error {
    for _, record := range k.buffer {
        kgo.Produce(ctx, &record, func(r *kgo.Record, err error) {
            if err != nil {
                fmt.Printf("record had a produce error: %v\n", err)
                
                // How do I return an error here and exit sendAll function?
                
            }
        })
    }
    return nil
}
登入後複製

解決方法

在我看來,您可以透過簡單地檢查「本地」變數來擺脫困境。

func (k *buffer) sendAll() error {

    var loop error

    for _, record := range k.buffer {
        if loop != nil {
            break
        }
        kgo.Produce(ctx, &record, func(r *kgo.Record, err error) {
           
            if err != nil {
                fmt.Printf("record had a produce error: %v\n", err)
                
                // How do I return an error here and exit sendAll function?
                loop = err
            }
        })
    }
    return loop
}
登入後複製

以上是如何從承諾內部傳回錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板