新的Promise无法回调

时间:2016-09-22 08:51:32

标签: javascript coffeescript promise

这是使用回调的工作代码(在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处理程序。我不知道为什么。我以为我抓住了承诺,但显然不是

1 个答案:

答案 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完全相同。

如果有人能够解释这一点会有兴趣。