2016-09-22 62 views
0

這裏是它採用了回調(這在CoffeeScript中)新的承諾未能包裹回調

requestUtils.post = (path, data) -> 
    requestUtils.request.post(
    "#{requestUtils.apiHostname}#{path}", 
    { json: data }, 
    logFn 
) 

當我運行此我看到記錄的HTTP響應的工作代碼。我想在resolve中調用logFn回調。

這裏是我的嘗試:

requestUtils.post = (path, data) -> 
    new Promise (resolve, reject) -> 
    requestUtils.request.post(
     "#{requestUtils.apiHostname}#{path}", 
     { json: data }, 
     resolve 
    ) 

似乎很簡單。當我打電話的功能,並通過一個承諾處理,像這樣:

GM.requestUtils.post("/getVehicleInfoService", {id: "#{id}"}) 
    .then() -> 
    console.dir arguments 

當我運行這個我沒有看到任何打印。 then處理程序似乎不被調用。我不知道爲什麼。我認爲我有諾言一握但顯然不是

+0

你沒有任何返回的參數傳遞給的'then'像'。然後回調(參數=> console.dir(參數))' – Redu

回答

0

想通了,想我必須包裹resolve另一個函數,像這樣:

requestUtils.post = (path, data) -> 
    new Promise (resolve, reject) -> 
    requestUtils.request.post(
     "#{requestUtils.apiHostname}#{path}", 
     { json: data }, 
    () -> resolve arguments 
    ) 

不同的是,而不是僅僅通過resolve爲回調我傳遞

() -> resolve arguments 

不完全知道爲什麼,這是因爲它似乎是在做同樣的事情就其本身傳遞resolve的情況。

如果有人能解釋這一點,會有興趣。