如何“暂停”等待用户操作的Javascript循环

时间:2012-09-03 05:52:16

标签: javascript jquery jquery-deferred

我有一个循环,在某些情况下我试图让Jquery延迟对象在继续或打破循环之前等待用户输入。

如果我将confirm().then(块放在function confirm(){之前,它会告诉我确认功能中没有足够的参数。如果我放置它,那么循环永远不会“暂停”等待用户交互。

非常感谢您的帮助。

由于

      for(...) {
          if (condition_that_needs_user_interaction){          
              function confirm() {  
                var defer = $.Deferred(); 
                $('<div div="dialogError"></div>').html("Error. Continue?").dialog({
                                            autoOpen: true,
                                            close: function() {  
                                        $(this).dialog('destroy');
                                    },
                                        title: '<span style="color: red";>Warning!</span>',
                                        modal: true,
                                        buttons: {
                                            'No': function() { 
                                                defer.resolve("no"); 
                                               $(this).dialog("close"); 
                                            },
                                            'Yes': function() { 
                                            defer.resolve("yes");
                                                                $(this).dialog("close"); 
                                            },
                                            'Apply to All': function() {                            
                                            defer.resolve("all"); 
                                                $(this).dialog("close"); 
                                            }
                                        }
                                });

                                return defer.promise(); 
                            }


                            confirm().then(
                                function (answer) {
                                    if(answer == "No") return false;
                                    else if(answer == "Yes") {
                                        //do something;
                                    } else if (answer == "all") {
                                        //do something;
                                    }


                                }, function(answer) {

                                }, function(answer) {

                                });
           } else {
        // biz as usual
           }
    } //end for loop    

0 个答案:

没有答案