【发布时间】:2013-05-14 03:58:58
【问题描述】:
我有一些 JavaScript 代码可以从 2 个来源中提取数据。
第一个来源是本地网络存储
第二个来源是 AJAX 请求。
条件很简单:
function getMyData(){
if (window.localStorage['myData'] != null)
{
return window.localStorage['myData'];
}
else
{
networkTools.ajax("geyMyData", function (data)
{
return data;
})
}}
但问题是 AJAX 是异步进程,我不希望代码在 getMyData() 返回之前继续。
我知道我可以使用回调,但我只想等到这个函数返回一些东西,然后继续执行。 (不仅适用于这种情况,而且适用于一般知识。)
这可能吗?
【问题讨论】:
-
networkTools是什么? -
networkTools 只是我的 jquery ajax 包装类
-
对不起;你需要使用回调。不过,Promise 可以让这一切变得更容易。
-
如果您不喜欢传递回调,那么您可以使用中介模式并引发 dataReceived 事件,该事件将触发任何监听它的函数。 addyosmani.com/resources/essentialjsdesignpatterns/book
-
@jekcom 所以你将一个长一个字母的函数“包装”到
networkTools中?酷 :D 无论如何,您可以使用promises,如前所述。
标签: javascript