每次遇到异常时如何继续循环并在完成时中断?

时间:2019-06-01 16:24:17

标签: javascript node.js reactjs

我正在尝试接收一个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次尝试避免无限循环)。

1 个答案:

答案 0 :(得分:0)

您应该在异步函数之前使用await,以等待它完成之后才能执行下一条语句。

await this.props.allMessages(..)

并确保将while循环包装在async函数中。