Javascript 在java脚本中第一个函数完全完成后调用第二个函数

Javascript 在java脚本中第一个函数完全完成后调用第二个函数,javascript,jquery,Javascript,Jquery,我有一个javascript函数,它是加载帮助菜单列表(下拉列表) 第一个函数:GetPageKeyword() 在某些情况下,第二个函数不起作用,因为它可能无法找到#helpMenu的id 代码:function:getArticulatedDetails:--$(“#帮助菜单”).html(htmlapend) 因此,在完成第一个函数后,我如何调用第二个函数。从代码中,似乎$(“#帮助菜单”)被发现为null或未定义 尝试检查$(“#帮助菜单”) **if($('#helpMenu') ==

我有一个javascript函数,它是加载帮助菜单列表(下拉列表)

第一个函数:GetPageKeyword()

在某些情况下,第二个函数不起作用,因为它可能无法找到#helpMenu的id

代码:function:getArticulatedDetails:--$(“#帮助菜单”).html(htmlapend)


因此,在完成第一个函数后,我如何调用第二个函数。

从代码中,似乎
$(“#帮助菜单”)
被发现为null或未定义

尝试检查
$(“#帮助菜单”)

**if($('#helpMenu') == null || $('#helpMenu') == undefined)**

然后执行追加html操作。

从代码中,似乎发现
$(“#帮助菜单”)
为空或未定义

尝试检查
$(“#帮助菜单”)

**if($('#helpMenu') == null || $('#helpMenu') == undefined)**

然后执行追加html操作。

在第一个方法中,调用

$('#helpMenu').html(htmlAppend)
应位于getJson(…)的处理程序中

目前,它在该方法完成之前被调用,但依赖于该异步回调生成的数据

(我会给你一个明确的代码更改,但很难在手机上编辑)

编辑-实际上上面的行是重复的。处理程序外部的一个可以删除。也许有重复的ID

更新Html后,还可以从getJson处理程序中调用第二个方法


menuHelpUl仅在getJson中的调用返回一些数据时才存在。如果没有,则没有元素。

在第一个方法中,调用

$('#helpMenu').html(htmlAppend)
应位于getJson(…)的处理程序中

目前,它在该方法完成之前被调用,但依赖于该异步回调生成的数据

(我会给你一个明确的代码更改,但很难在手机上编辑)

编辑-实际上上面的行是重复的。处理程序外部的一个可以删除。也许有重复的ID

更新Html后,还可以从getJson处理程序中调用第二个方法


menuHelpUl仅在getJson中的调用返回一些数据时才存在。如果没有,则没有元素。

尝试在ajax成功回调结束时调用第二个函数:

$.ajax({
    /* settings */
    success: function (data) {
        var res = data.data;
        var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
        if (res.length > 0) {
            $.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
                function (data) {
                    if (data.results.length > 0) {
                        htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
                        for (var i = 0; i < data.results.length; i++) {
                            htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
                        }
                        htmlAppend += "</ul>";
                    }
                    $('#helpMenu').html(htmlAppend);
                    GetArticulateDetails(); // here !
                });
        }
        $('#helpMenu').html(htmlAppend);
    }
});

尝试在ajax成功回调结束时调用第二个函数:

$.ajax({
    /* settings */
    success: function (data) {
        var res = data.data;
        var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
        if (res.length > 0) {
            $.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
                function (data) {
                    if (data.results.length > 0) {
                        htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
                        for (var i = 0; i < data.results.length; i++) {
                            htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
                        }
                        htmlAppend += "</ul>";
                    }
                    $('#helpMenu').html(htmlAppend);
                    GetArticulateDetails(); // here !
                });
        }
        $('#helpMenu').html(htmlAppend);
    }
});

使用javascript中的承诺尝试此解决方案:

function GetPageKeyword() {
    return new Promise((resolve, reject)=>{
        //your code here
        resolve();
    });
}

function GetArticulateDetails() {
    return new Promise((resolve, reject)=>{
        //your code here
        resolve();
    });
}
可以这样称呼:

GetPageKeyword().then((result)=>{
    GetArticulateDetails();
}).catch((error)=>{
    //handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
以下是已编辑的第一个函数:

function GetPageKeyword() {
    return new Promise((resolve,reject)=>{
        var url = window.location.href.replace(window.location.origin, '').replace('/#', '').replace('#', '').replace('//', '/');
        url = url.split("?")[0];
        url = GetURL(url);
        if (url.lastIndexOf('/') == (url.length - 1))
            url = url.slice(0, -1);
        if (url.indexOf('/') == 0)
            url = url.substring(1, url.length);
        $.ajax({
            url: "/api/PageKeywords/GetLabelsByUrl",
            type: 'Get',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            cache: false,
            data: { url: url },
            success: function (data) {
                var res = data.data;
                var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
                if (res.length > 0) {
                    $.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
                        function (data) {
                            if (data.results.length > 0) {
                                htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
                                for (var i = 0; i < data.results.length; i++) {
                                    htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
                                }
                                htmlAppend += "</ul>";
                                $('#helpMenu').html(htmlAppend);
                                resolve()
                            }else{
                                $('#helpMenu').html(htmlAppend);
                                resolve()
                            }
                        });
                }else{
                    $('#helpMenu').html(htmlAppend);
                    resolve()   
                }

            },
            error: function (jqXhr, textStatus, errorThrown) {
                var err = jqXhr;
                reject()
            }
        });
    })
}
函数GetPageKeyword(){ 返回新承诺((解决、拒绝)=>{ var url=window.location.href.replace(window.location.origin.).replace('/#','').replace('/#','').replace('/#',''); url=url.split(“?”[0]; url=GetURL(url); if(url.lastIndexOf('/')==(url.length-1)) url=url.slice(0,-1); if(url.indexOf('/')==0) url=url.substring(1,url.length); $.ajax({ url:“/api/PageKeywords/GetLabelsByUrl”, 键入:“Get”, contentType:'application/json;charset=utf-8', 数据类型:“json”, cache:false, 数据:{url:url}, 成功:功能(数据){ var res=data.data; var htmlAppend='”; } htmlAppend+=“”; $('helpMenu').html(htmlapend); 解决() }否则{ $('helpMenu').html(htmlapend); 解决() } }); }否则{ $('helpMenu').html(htmlapend); 解决() } }, 错误:函数(jqXhr、textStatus、errorshown){ var err=jqXhr; 拒绝 } }); }) }
使用javascript中的承诺尝试此解决方案:

function GetPageKeyword() {
    return new Promise((resolve, reject)=>{
        //your code here
        resolve();
    });
}

function GetArticulateDetails() {
    return new Promise((resolve, reject)=>{
        //your code here
        resolve();
    });
}
可以这样称呼:

GetPageKeyword().then((result)=>{
    GetArticulateDetails();
}).catch((error)=>{
    //handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
以下是已编辑的第一个函数:

function GetPageKeyword() {
    return new Promise((resolve,reject)=>{
        var url = window.location.href.replace(window.location.origin, '').replace('/#', '').replace('#', '').replace('//', '/');
        url = url.split("?")[0];
        url = GetURL(url);
        if (url.lastIndexOf('/') == (url.length - 1))
            url = url.slice(0, -1);
        if (url.indexOf('/') == 0)
            url = url.substring(1, url.length);
        $.ajax({
            url: "/api/PageKeywords/GetLabelsByUrl",
            type: 'Get',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            cache: false,
            data: { url: url },
            success: function (data) {
                var res = data.data;
                var htmlAppend = '<a id="hlpMenuLink" class="dropdown-toggle" data-toggle="dropdown"><i style="font-size: 17px;" class="fa fa-question-circle"></i></a>';
                if (res.length > 0) {
                    $.getJSON("https://test.com/search.json?label_names=" + res[0].labels,
                        function (data) {
                            if (data.results.length > 0) {
                                htmlAppend += '<ul id="menuHelpUl" class="dropdown-menu pull-right">';
                                for (var i = 0; i < data.results.length; i++) {
                                    htmlAppend += "<li><a href='" + data.results[i].html_url + "' target=\"_blank\">" + data.results[i].name + "</a></li>";
                                }
                                htmlAppend += "</ul>";
                                $('#helpMenu').html(htmlAppend);
                                resolve()
                            }else{
                                $('#helpMenu').html(htmlAppend);
                                resolve()
                            }
                        });
                }else{
                    $('#helpMenu').html(htmlAppend);
                    resolve()   
                }

            },
            error: function (jqXhr, textStatus, errorThrown) {
                var err = jqXhr;
                reject()
            }
        });
    })
}
函数GetPageKeyword(){ 返回新承诺((解决、拒绝)=>{ var url=window.location.href.replace(window.location.origin.).replace('/#','').replace('/#','').replace('/#',''); url=url.split(“?”[0]; url=GetURL(url); if(url.lastIndexOf('/')==(url.length-1)) url=url.slice(0,-1); if(url.indexOf('/')==0) url=url.substring(1,url.length); $.ajax({ url:“/api/PageKeywords/GetLabelsByUrl”, 键入:“Get”, contentType:'application/json;charset=utf-8', 数据类型:“json”, cache:false, 数据:{url:url}, 成功:功能(数据){ var res=data.data; var htmlAppend='”; } htmlAppend+=“”; $('helpMenu').html(htmlapend); 解决() }否则{ $('helpMenu').html(htmlapend); 解决() } }); }否则{ $('helpMenu').html(htmlapend); 解决() } }, 错误:函数(jqXhr、textStatus、errorshown){ var err=jqXhr; 拒绝 } }); }) } 您可以使用

你可以用


将menuHelpUl声明为ui元素,如下所示:

GetPageKeyword().then((result)=>{
    GetArticulateDetails();
}).catch((error)=>{
    //handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
并在ajax成功中使用它

menuHelpUl.append(htmlAppend);

将menuHelpUl声明为ui元素,如下所示:

GetPageKeyword().then((result)=>{
    GetArticulateDetails();
}).catch((error)=>{
    //handle error
});
var menuHelpUl = $('<ul id="menuHelpUl" class="dropdown-menu pull-right">');
并在ajax成功中使用它