Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否将异步调用转换为同步?_Javascript_Design Patterns_Asynchronous_Publish Subscribe - Fatal编程技术网

Javascript 是否将异步调用转换为同步?

Javascript 是否将异步调用转换为同步?,javascript,design-patterns,asynchronous,publish-subscribe,Javascript,Design Patterns,Asynchronous,Publish Subscribe,我在处理异步调用时遇到问题 例如,我想用requirejs动态加载一些模块。 目前我使用订阅服务器-发布服务器模式。不幸的是,这使我的代码 在某些令人困惑的情况下…: 假设对象中有一个工作事件系统 正如你所看到的,这真的令人困惑 是否有其他设计模式可以很好地处理异步调用?查看。(即使没有jq,大多数库也实现了javascript承诺) 使用它,您可以执行以下操作: var loadingOne = getLibOne(); //returns a jquery deferred promise

我在处理异步调用时遇到问题

例如,我想用requirejs动态加载一些模块。 目前我使用订阅服务器-发布服务器模式。不幸的是,这使我的代码 在某些令人困惑的情况下…:

假设对象中有一个工作事件系统

正如你所看到的,这真的令人困惑

是否有其他设计模式可以很好地处理异步调用?查看。(即使没有jq,大多数库也实现了javascript承诺)

使用它,您可以执行以下操作:

var loadingOne = getLibOne(); //returns a jquery deferred promise
var loadingTwo = getLibTwo(); //returns another one

var loadingAllLibraries = $.when(loadingOne, loadingTwo);
loadingAllLibraries.done(function(lib1, lib2) {
  //... stuff
});
不完全是你的想法,但你明白了。合成异步原子变得相对容易。

仔细研究。(即使没有jq,大多数库也实现了javascript承诺)

使用它,您可以执行以下操作:

var loadingOne = getLibOne(); //returns a jquery deferred promise
var loadingTwo = getLibTwo(); //returns another one

var loadingAllLibraries = $.when(loadingOne, loadingTwo);
loadingAllLibraries.done(function(lib1, lib2) {
  //... stuff
});

不完全是你的想法,但你明白了。组成异步原子变得相对容易。

这是Javascript中异步工作方式的一个不幸的副作用。没有“一网打尽”的解决方案。@usr可能不是“一网打尽”,而是一种替代方案?这是Javascript中异步工作方式的一个不幸的副作用。没有“一网打尽”的解决方案。@usr可能不是“一网打尽”,而是一个替代方案?@kyogron-最好的方法是查看上面的链接并开始使用它。它看起来很吓人,但实际上并不复杂。你可以通过谷歌搜索“javascript承诺”来查找更一般化的想法,听起来不错,我会看看如何在我的项目中最好地实现这一点:)@kyogron-顺便说一下,后来的一个jquery引入了一个类似的特性,即回调,它允许您快速创建发布/订阅队列。在Javascript中,它被规范化为Promise:@kyogron——最好的方法是查看上面的链接并开始使用它。它看起来很吓人,但实际上并不复杂。你可以通过谷歌搜索“javascript承诺”来查找更一般化的想法,听起来不错,我会看看如何在我的项目中最好地实现这一点:)@kyogron-顺便说一下,稍后的jQuerys中引入的一个类似功能是回调,它允许您快速创建发布/订阅队列,并在Javascript中规范化为Promise: