相关疑难解决方法(0)

JavaScript中的异步编程,没有混乱的回调

我想将异步函数转换为同步函数.

function fetch() {
  var result = 'snap!';
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
    result = data;
  });
  return result;
}

document.write(fetch());?
Run Code Online (Sandbox Code Playgroud)

看到实际行动

结果总是"快速!",因为$.getJSON完成后运行fetch().

我的第一个想法是:

function fetch() {
  var result = 'snap!';
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function messyCallback(data){
    result = data;
  });
  while (true) {
    if (result != 'snap!') return result;
  }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,也吹掉了浏览器.

在JS 1.7中读到了关于生成器和迭代器的内容,但我不知道如何将它应用于我的问题.

这个问题并不是关于jQuery的.而不是$ .getJSON可以是任何其他异步函数.

javascript synchronization asynchronous callback

7
推荐指数
1
解决办法
1万
查看次数

要解决的JavaScript难题:window.confirm = divConfirm(strMessage)

场景是:旧网站已经编写了很多JS代码.如果用户希望将所有警报消息更改为新的jazzy Div基于警报,这是使用JQuery,YUI,Prototype等非常常见的.
主要有树JS对话框
1.警报

要更改它的简单,我们只需编写新函数,它将显示div弹出窗口并显示消息,然后覆盖window.alert

function showDivAlert(strMessage){
//div popup logic and code
}

window.alert = showDivAlert;

提示

这也很容易编写函数来接受字符串并显示输入值的文本框.现在返回操作基于单击"确定"按钮,这里的生活很简单.


function shoDivPromp(strMessage){
//div pop up to show the text box and accept input from the user
}
window.prompt = shoDivPromp;

3.确认

现在,上面两个很容易覆盖和修改默认对话框,但确认并不复杂.
但是,默认JS确认对话框会停止JS执行,当用户单击"确定"或"取消"执行时,通过确定返回值(true/false)来恢复执行.但是如果我们使用div popup执行没有停止,那就是问题.
我们仍然可以实现确认,但在这种情况下,我们必须绑定OK和CANCEL情况的方法,这些方法将附加到OK和CANCEL按钮.有了这个功能,签名就像. function newConfirm(msg, fun OkAction(), fun CancelAction)

现在这是一个问题,这不能帮助我改变网站上的确认对话框,就像我们使用alert(); 问题
我不确定它是否可能实现,但我认为可以使用一些JS模式.所以,如果有可能请告诉我.

javascript asp.net ajax jquery

4
推荐指数
1
解决办法
5541
查看次数