0

我有一个循环,在某些情况下,我试图让一个 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    
4

0 回答 0