我正在尝试接收一个Promise并用它更新DOM,但是Promise抛出异常的可能性为十分之三。我想做的是每次抛出异常时都要不断尝试,并在没有异常发生时中断。
我试图做一个while循环,该循环应在发生异常时继续并在成功时中断,但无论如何都会重复。我不知道如何在异步环境中进行while循环。
function _SubmitFormPost(a, d, c) {
if (typeof MSOWebPartPageFormName != "undefined") {
var b = document.forms[MSOWebPartPageFormName];
if (null != b)
{
if (d != undefined && d == true || typeof b.onsubmit == "undefined" || b.onsubmit == null || b.onsubmit() != false) {
//HERE IS A RANDOM EXAMPLE OF T/F
typeof window.WebForm_OnSubmit == "function" && window.WebForm_OnSubmit();
if (ajaxNavigate.get_search().match(new RegExp("[?&]IsDlg=1")) != null)
a += a.indexOf("?") == -1 ? "?IsDlg=1" : "&IsDlg=1";
if (FV4UI())
try {
var e = SP.Ribbon.PageManager.get_instance().get_ribbon().get_selectedTabId();
if (Boolean(e)) {
a = StURLSetVar2(a, "InitialTabId", escapeProperly(e));
a = StURLSetVar2(a, "VisibilityContext", "WSSTabPersistence")
}
} catch (f) {}
if (c != undefined && c == true) {
a = DemoteIntoFormBody(b, a, "owsfileref");
a = DemoteIntoFormBody(b, a, "NextUsing")
}
b.action = STSPageUrlValidation(a);
b.method = "POST";
if (isPortalTemplatePage(a))
b.target = "_top";
!bValidSearchTerm && _ClearSearchTerm("");
b.submit()
}
}
}
}
我希望每次遇到异常时,它都会function s(){
console.log('in s')
//is true
if(1==1){
//is true
if(2==2){
console.log(' if 2==2 and eval of t/f is ',typeof(1) =="function")
//is false -- expexted to skip console.log
typeof(1) =="function"
console.log('2 is 2')
}
//is true
2==3
if(3==3){
console.log('3==3')
}
}
}
s()
,如果没有异常抛出,则跳出循环(最多10次尝试避免无限循环)。
答案 0 :(得分:0)
您应该在异步函数之前使用await
,以等待它完成之后才能执行下一条语句。
await this.props.allMessages(..)
并确保将while循环包装在async
函数中。