- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个插件,它以 JSON 格式获取一堆图像的信息,然后将它们显示在某个对话框中以供选择。不幸的是,我的第一直觉很清楚地导致了竞争条件:
var ImageDialog = function () {};
ImageDialog.prototype.items = [];
ImageDialog.prototype.fetch_images() {
var parse_images = function(data) {
// Magically parse these suckers.
data = awesome_function(data);
this.items = data;
};
magicalxhrclass.xhr.send({"url": 'someurl', "success": parse_images, "success_scope": this});
}
ImageDialog.prototype.render = function () {
this.fetch_images();
// XHR may or may not have finished yet...
this.display_images();
this.do_other_stuff();
};
var monkey = new ImageDialog();
monkey.render();
在我的脑海中,我想我可以通过更改 parse_images
回调以包括其余的渲染步骤来解决这个问题。但是,这看起来不太正确。为什么 fetch_images
方法会调用一堆关于显示图像的东西?
那么:我应该在这里做什么?
我非常确定 deferreds 会有所帮助,但是唉:我需要在没有任何外部库的情况下编写它。 :(
对其他代码味道的评论也很好!
最佳答案
一般来说,您可以使用的基本思想是,当常规程序使用 return 语句(意思是“我的函数已完成,现在做你的工作!”)时,异步延续传递程序将改为使用 ballcabk 函数被显式调用
function fetch_images(callback){
magicalXHR({
success: function(data){
parse_images(data);
callback(whatever);
}
}
}
或者,如果 parse_images 本身是一个异步函数:
parse_images(data, callback)
现在,当您调用 fetch_images 代码时,它会进入回调,而不是假设 fetch_images 将在返回时完成
fetch_images(function(
display_images()
})
通过使用回调,您可以很好地模拟传统程序的功能(实际上它是一种形式与另一种形式之间相当机械的转换)。您现在遇到的唯一问题是错误处理变得棘手,循环等语言功能不能很好地与异步回调配合使用,并且回调往往会嵌套在回调 hell 中。如果回调开始变得太复杂,我会研究使用其中一种 Javascript 方言编译成连续传递式 Javascrit(其中一些在运行时不需要额外的库就可以工作)。
关于javascript - 异步、回调和 OOP JavaScript : how do I organize this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513663/
有两个资源组织,但配置文件不同,配置文件将如何产生差异? 它与 r4.organization 有什么不同? @ResourceDef(name="Organization", profile="h
我想知道你们中有谁可以在同一天处理多个项目,而每个项目只花很短的时间。或者,如果您能够在同一小时内同时进行两个或三个或更多项目。我有很多事情要做,我开始想知道我怎么能做到这一点?我考虑过使用多个工作区
在我的 C 项目中,我有一个相当大的 utils.c 文件。它真的充满了许多不同种类的实用程序。只是在里面塞了不同的杂项功能,我觉得有点顽皮。例如,它有一些与低级内容相关的实用程序,例如小写()函数,
Closed. This question is off-topic 。它目前不接受答案。 想改善这个问题吗? Update the question 所以它是堆栈溢出的 on-topic。 9年前关
您如何为您的主文件夹中的代码项目组织您的个人工作区?您如何保持工作空间高效地同时处理多个项目? 我的问题最重要的方面在上面。除非您想解决该主题的特定子部分,否则您可以停止阅读。以下是有关工作空间组织的
将开发项目(例如 ASP.NET MVC 应用程序)拆分为多个项目的常见原因是什么?代码组织也可以通过文件夹来完成。多个项目往往会产生循环引用冲突,并通过管理/解决这些冲突来增加复杂性。 所以为什么?
我今天想知道人们在决定将一个源文件拆分成多个较小的文件之前通常在一个源文件中有多少代码。 就我个人而言,我倾向于保持我的文件相当小(在使用 C/C++ 时尤其是头文件)。也就是说,我通常在给定文件中只
我在文件夹组织方面遇到了一些困难,无法组织我正在处理的许多项目。我在 OS X 上工作 - 现在我使用 ~/Development/作为根文件夹,并且我有很多类型的项目。例如,我的 iPhone 应用
它与编程无关,但肯定与开发有关。 我需要一份人类口语列表(通常我们会在其他所有网站上看到可供选择), 在我们的一个项目中需要。如果还包含语言代码信息,并且在 中,那就太好了.txt 格式或任何其他可提
我在 Unix 系统上得到了这个文件路径: Folder1/Folder2/text.txt Folder1 仅包含Folder2,Folder2 包含该文件。所以文件test.txt的路径可以更短-
我想在我的网站上放置一个 Schema.org Organization 项。 我应该只将 JSON-LD 放在联系页面上,还是可以将它添加到网站的每个页面上?什么是最好的解决方案? 最佳答案 使用
您如何到达XCode Provisioning Organizer? 最佳答案 在Xcode中,从“窗口”菜单中选择“管理器”,您将获得一个窗口,该窗口为您提供有关设备和置备配置文件的各种信息。另外,
我正在设置一些用于网站开发的服务器。我希望它以一种相当标准的方式组织起来。你如何组织你的服务器来开发相对较小的网站,每个网站都有一点独特的代码? 我关注的一些细节包括(但不限于): 在开发过程中存在哪
我正在制作我自己的方便函数的小库,并且我正在尝试遵循 Phobos 的命名约定,但我真的很困惑。我怎么知道东西适合哪里? 例子: 如果有像 foldRight 这样的函数在 Phobos 中(基本上是
我在我的 Mac 上设置了多个开发者帐户,现在需要退出我的帐户才能访问其他人的资源。我在任何地方都找不到这样的选择。 知道如何退出 Xcode Organizer 吗? 最佳答案 在最新的 xcode
我目前正在尝试了解 AngularJS 涉及的所有概念,它非常大。我理解了大部分内容,但我仍然不知道如何组织你的应用程序。 让我们举个例子:在主页上,我有几个 block :每个 block 都是简单
查看 matplotlib 文档,我发现了这个示例: http://matplotlib.org/users/tight_layout_guide.html import matplotlib.pyp
我有 .hgt 文件,其中包含 (1201x1201) 个 16 位整数。我将此文件存储在最高级别为 5 的四叉树中。在级别 5 的叶子中,我有点数组列表: public class Point {
我正在为我的应用查看来自 Xcode Organizer 的崩溃报告。 我在下面的屏幕截图中看到了“+ 92”。什么意思? 最佳答案 这应该是方法内部发生错误的位置。如果您使用调试信息格式 dwarf
我可以拥有多个分发证书吗?我正在开发一个应用程序,但当前证书不是我创建的,而是用于另一个应用程序的。该应用程序和证书是由不再在这里的其他人完成的。 我下载了 vert,但在管理器中它告诉我,找不到有效
我是一名优秀的程序员,十分优秀!