2017-10-04 42 views
-1

我正在嘗試在grails中完成web服務休息我有例子,一切都像文檔一樣工作,我遇到的問題是我在web服務中有一個過程需要大約5分鐘,我不想在客戶端等待,但時間,而不是在過程完成時,Web服務通知我,我有關於回調的理論,但我找不到一個明確的例子,可以幫助我......謝謝提前。如何在grails中創建web服務回調

+0

爲什麼過程需要5分鐘的原因是什麼? – user615274

回答

0

有很多方法可以做到這一點,看看Grails' async options

成功使用的一種方法是Promises,這不是一個回調機制,但它可以讓你脫離工作異步釋放調用資源,你只需要實現一種報告錯誤的方法,也許更新顯示任務已成功完成的內容。

這是一個諾迪例子,表示的是基礎知識...

class MyService { 

import static java.util.concurrent.TimeUnit.* 
import static grails.async.Promises.* 

def doStuff() { 
    Promise p = task { 
     return runLongTask() 
    } 
    p.onError { Throwable err -> 
     log "Task failed ${err.message}" 
     // maybe add a row to an event logging DB table 
    } 
    p.onComplete { result -> 
     log "Task completed successfully" 
     // again maybe add a row to an event logging DB table & do something with result 
    } 
    } 
} 

def runLongTask() { 
    // do stuff & maybe return something 
}