2015-12-16 39 views
0

我試圖使用dojo jsonrest存儲從服務器請求數據。雖然要求我趕上回調做一些事情。例如
Dojo:在使用lang.hitch時未能達到錯誤回調

this.myStore.get(paramValue).then(lang.hitch(this, function (res) { 
         //do something like this.globalVal = res; 
        }, function (err) { 
         console.log(err); 
         //throw error 
        })); 

但上面的代碼只有當請求返回成功的作品,即它劑量的推遲對成功返回的第一個塊進入,但發生了一些錯誤時,它未能在error callback達到和因此我無法捕捉服務器返回的錯誤。

如果我做上面的代碼,而無需使用lang.hitch這樣

this.myStore.get(paramValue).then(function (res) { 
         //do something like this.globalVal = res; 
        }, function (err) { 
         console.log(err); 
         //throw error 
        }); 

然後,它的工作原理。即它現在也會達到錯誤回調,並且我可以向用戶拋出相應的錯誤。

那麼爲什麼要這樣做,如果lang.hitch不是可以延遲使用的東西,那麼要使用什麼?

由於

回答

3

掛接裝置接受兩個參數,背景和它是在前面的背景下將要執行的功能。目前你使用三個,這是行不通的。你試圖將兩個函數包裝到同一個連結中。您需要將它們分別包裝在單獨的連結中:

this.myStore.get(paramValue).then(
    lang.hitch(this, function success (res) { 
     console.log('Success'); 
    }), 
    lang.hitch(this, function error (err) { 
     console.log('Error'); 
    }) 
); 
+0

它們對性能的任何影響如何處理它? –

相關問題