javascript会暂停返回值吗?

时间:2014-01-22 17:47:18

标签: javascript jquery

我想在我的网站上创建一个自定义确认框。

  1. 可以将事件处理程序绑定在匿名函数内。
  2. javascript会在返回值上等待,或者在返回之后返回null / false 时间/暂停执行。
  3. 是否可以使用确认框 延期物品?我真的很难把它们放在一起 延迟对象的工作原理以及如何实现它们。请问如下 在理论上工作?
  4. HTML

    <div id='box'>
       <button id='confirm'></button>
    </div>
    <button id='startConfirmation'></div>
    

    javascript(jquery)

    $('#startConfirmation').click(function()
    {
       if(buttonClicked())
       {
          //do stuff
       }
    });
    function buttonClicked()
    {
       return $('#confirm').click(function()
              {
                 return true;
              });
    }
    

1 个答案:

答案 0 :(得分:1)

  

事件处理程序是否可以绑定在匿名函数中。

  

javascript会等待返回值,或者在执行时间暂停/暂停后返回null / false。

没有

  

是否可以使用延迟对象确认框?

  

我很难将延迟对象的工作原理以及如何实现它们。

它们仍然是异步的,这意味着你不能简单地调用一个函数并从中调用return的值。它们只允许更容易地链接多个异步任务。

  

以下是理论上的工作吗?

不,正如我刚才所说 - buttonClicked()几乎无法返回有用的价值。它可能有某种内部存储并返回一个布尔值,无论该按钮是否被点击过一次,但我认为这不是你想要的。

有了延迟,它更像是这样:

function buttonClicked() {
    var deferred = $.Deferred();
    $('#confirm').one("click", deferred.fulfill);
    // maybe reject at [ESC] or when hitting a close button?
    return deferred.promise;
}

$('#startConfirmation').click(function() {
    // every time the start button is hit
    buttonClicked().then(function() {
        // do stuff (maybe return another promise)
    }).always(closeDialogue);
});