【问题标题】:Return value from event handler into parent function from javascript从事件处理程序返回值到来自javascript的父函数
【发布时间】:2012-01-17 20:58:26
【问题描述】:

我需要将一个由事件处理程序返回的值放入首先启动事件的函数中,只是为了返回仅在事件处理程序中接收的值。我相信应该有一种简单的方法来实现这一点或从不同的角度解决问题。

我真正需要做的是:

  1. 创建一个新的 img DOM 对象以将 dataURL 输入(dataURL 来自 canvas.toDataURL())
  2. img.onload 会让我返回 dataURL

如果有帮助,我会使用 jQuery,但当然不必这样做。

据我了解,我不能依靠 img 来立即获取数据,而且使用超时等待事件触发并使用一些全局变量感觉很愚蠢,尤其是因为可能会并行处理一些变量。

对于更多背景知识,这一切都是为了在使用 HTML5 引擎(多次)上传图像之前调整图像大小。

感谢您的阅读,当然还有任何提示:)

谢谢, 伊戈尔

【问题讨论】:

  • 没什么,只是写了事件处理程序,然后意识到我需要“父”函数中的值。我意识到我可以循环超时,但直觉告诉我应该有更聪明的东西:)
  • 一个 promise 库可能值得研究:github.com/kriskowal/q
  • 这是一个非常古老的评论,但对于偶然发现这个问题的人来说可能是一个有用的评论。这些天我用 Bluebird 来做承诺。回顾这个问题让我意识到已经取得了很大的进步,感谢@thetallweeks 周五的复习))

标签: javascript


【解决方案1】:

从事件处理程序中返回 值是没有意义的。事件在它们发生时发生,此时浏览器调用处理程序。因此,没有代码期望任何返回值;它无处可去。

相反,只需在事件处理程序内部做任何你需要做的事情。

【讨论】:

  • 我需要从构造事件触发对象的函数 (F) 返回值,以将其分配给首先调用 F 的变量。很抱歉,如果它令人困惑:)
  • 我知道你在说什么,但根本不可能做到这一点。 Web 浏览器中的 JavaScript 是一个异步环境;你不能让函数“等待”某事发生。因此,构建代码的方法是采用异步特性,而不是编写一个期望返回值的函数,而是让它传入一个自己的处理函数,该处理函数将由图像的“onload”处理程序。
  • 我想我快到了...我需要将另一个处理程序传递给原始处理程序,以便在加载 img 时在那里执行它...
  • 感谢您帮助我度过难关,这确实让我思考)此外,对于任何有类似问题的人来说,还有一个不错的线程:stackoverflow.com/questions/2993563/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
相关资源
最近更新 更多