当前位置: 首页 > 知识库问答 >
问题:

带有多个回调的冰咖啡脚本

浦德义
2023-03-14

当我刷新多个数据源时,我使用带有upshot js的Iced coffescript。刷新方法有两个回调,一个表示成功,另一个表示错误,我希望等待每个调用进行回调。

我看不出如何在不创建附加功能的情况下使用idced的咖啡脚本来执行此操作。我的问题是 - 有没有一种更优雅的方式,我可以服从多个回调之一?

这是我目前拥有的代码:

refreshMe = (key, value, result) =>
    value.refresh(
    (success)=>
            result success
    ,
    (fail, reason, error)=>
        result undefined, fail
    )
@refresh = () =>                
success={}
fail={}
await
    for key, value of @dataSources
    refreshMe key, value, defer success[key], fail[key]

共有3个答案

汝吕恭
2023-03-14

冰镇。对于这种情况,显式地进行了集合库:在多个回调的第一个返回。从文档中:

这里有一个例子,展示了一个集合点的不同输入和输出。它执行两次并行DNS查找,并仅在第一次返回时报告:

hosts = [ "okcupid.com", "google.com" ];
ips = errs = []
rv = new iced.Rendezvous
for h,i in hosts
    dns.resolve hosts[i], rv.id(i).defer errs[i], ips[i]

await rv.wait defer which
console.log "#{hosts[which]}  -> #{ips[which]}"
戎泰
2023-03-14

下面是我用来转换promise的一些代码。然后(-

# You can write like this:
await value.refresh esc defer e, result


# onError - function to be called when promise rejected.
# onSuccess - function to be called when promise is fulfilled.
module.exports = esc = (onError, onSuccess) ->
  util = require 'util'
  return (result) ->
    if util.isError result
      # Always send back an error to first handler.
      onError? result
    else if onSuccess?
      console.log onSuccess, result
      # `await fn esc done, defer result`
      onSuccess? result
    else
      # `await fn esc done`
      onError? null, result

您可以稍微修改 esc 函数以处理每个回调的多个参数。

姜博
2023-03-14

这也是我找到的唯一方法。我在主干中使用它,并用@icedSave包装(例如)模型的@save函数:

# An IcedCoffeescript friendly version of save
icedSave: (callback) ->
    @save {},
        success: (model, response) -> callback(true, model, response)
        error: (model, response) -> callback(false, model, response)
 类似资料:
  • 如何使用和在中返回情侣值? 没有< code>autocb,我可以: 如何使用实现这一点?此代码... …抛出错误:

  • 我在< code >冰咖啡脚本中使用了< code>try catch块。我调用了不存在的对象< code>a的不存在的方法< code>fake,并期望捕获错误。 但是在调用函数 a.fake()后,在控制台中抛出错误,但它没有按预期使用块。 如果我注释掉字符串<code>并等待数据库。查找“79”,将其延迟到c,d。。。 ...它按预期工作,错误被捕获。 我试图通过其他简单的异步函数调用来改变

  • 问题内容: 尝试使用TowerJS作为测试设置基本站点,但是在运行脚手架生成器时遇到此错误。 问题答案: 更新您的package.json文件 在“ devDependencies”上并再次更新npm 为我解决了同样的问题

  • 在我的主要活动中,我有initUi函数,它将触发对webviewActivity的意图,在webviewActivity中,有一个FragWebView,其中加载了url。 以下是来自FragWebView的示例代码: 我从我的主要活动中传递打开webview的意图是: 请让我知道如何解决这个问题。 问候

  • 1.实习的项目 怎样实现视频进度拖动播放 怎样实现文字限制行数 怎样实现图片或者视频上传服务器 2.数组去重  3.mongoose 和mongodb区别 4.html语义化标签 5.cookie与session 是干什么的 有什么用 6.express中间件 7.git基本指令 8.发生冲突怎样合并分支 9.vue组件传值 9.有没有部署过项目在服务器 10.未来的打算 11.上次实习最大的困难

  • ListView的页脚如下所示(footer.xml): 在录制脚本时(通过Android Studio中的“Record Espresso Test”),我收到了以下代码,以单击按钮“Next”: