这是使用回调的工作代码(在coffeescript中)
requestUtils.post = (path, data) ->
requestUtils.request.post(
"#{requestUtils.apiHostname}#{path}",
{ json: data },
logFn
)
当我运行它时,我看到记录了HTTP响应。我想在logFn
中转换resolve
回调。
这是我的尝试:
requestUtils.post = (path, data) ->
new Promise (resolve, reject) ->
requestUtils.request.post(
"#{requestUtils.apiHostname}#{path}",
{ json: data },
resolve
)
看起来很简单。当我调用函数并传递一个这样的promise处理程序时:
GM.requestUtils.post("/getVehicleInfoService", {id: "#{id}"})
.then () ->
console.dir arguments
当我跑步时,我看不到任何印刷品。似乎没有调用then
处理程序。我不知道为什么。我以为我抓住了承诺,但显然不是
答案 0 :(得分:0)
想出来,猜测我必须将resolve
包装在另一个函数中,如下所示:
requestUtils.post = (path, data) ->
new Promise (resolve, reject) ->
requestUtils.request.post(
"#{requestUtils.apiHostname}#{path}",
{ json: data },
() -> resolve arguments
)
不同之处在于传递resolve
作为我传递的回调
() -> resolve arguments
不完全确定为什么会这样,因为它似乎与传递resolve
完全相同。
如果有人能够解释这一点会有兴趣。