我正在寻找一种有时暂停操作(函数/方法调用)的好方法,直到用户确认他想要执行该操作的特定部分。我需要在不允许代码执行停止的环境中执行此操作(在我的情况下为 ActionScript,但 JavaScript 的方法应该相同)。
为了说明,这是在引入用户提示之前的动作模型:
<preliminary-phase> // this contains data needed by all the following phases //
<mandatory-phase> // this will be always be executed //
<optional-phase> // this will always execute too, if in this form, but in some cases we need to ask the user if he wants to do it //
<ending-phase> // also mandatory //
我需要的是插入一个有条件的用户提示,一个“你想要做这部分吗?”,并且<optional-phase>
只在用户想要的时候做。
<preliminary-phase>
<mandatory-phase>
if(<user-confirmation-is-needed> and not <user-response-is-positive>){
<do-nothing>
}
else{
<optional-phase>
}
<ending-phase>
当尝试在 ActionScript/JavaScript 中执行此操作时,我得到了如下信息:
<preliminary-phase>
<mandatory-phase>
if(<user-confirmation-is-needed>){
askForConfirmation(callback = function(){
if(<user-response-is-positive>)
<optional-phase>
<ending-phase>
});
return;
}
<optional-phase>
<ending-phase>
现在两者<optional-phase>
和<ending-phase>
都是重复的。也因为他们使用创建的对象,<preliminary-phase>
如果不将所有数据传递给这些函数,我就无法将它们移动到外部函数。
我目前的解决方案是,在我要求确认之前,我将每个<optional-phase>
和<ending-phase>
在一些本地函数中(以便它们可以访问数据<preliminary-phase>
)包含在内,并且我调用这些函数而不是复制代码,但似乎不对代码不再按执行顺序排列。
你们会推荐什么?
注意事项:
1.askForConfirmation
是一个非阻塞函数。这意味着在其调用之后的代码会立即执行(这就是为什么我的return;
方法中有一个)。