Установить порядок выполнения функций

0

У меня есть две функции JQuery. Как установить порядок выполнения так, чтобы функция B вызывается только после функции A (причина в том, что функция A задает значение переменной IdstoExclude, которая передается как параметр функции B. Ниже я пытаюсь, но не повезло:

var IDstoExclude = "123";
callListService('getArticleTypelistById', 'Atid', 87, 5, '#MainStory', '#tmplFeaturePanel', IDstoExclude);
callListService('getArticleTypelistById', 'Atid', 87, 10, '#LeftSideContent1', '#tmplLeftSideContent1', IDstoExclude);


function callListService(webServiceName, parameterName, parameterValue, noOfItems, domElement, templName, exclIDs) {
    //set a default value for the template name * exclIDs
    templName = templName || "#FeaturedSubStories";
    //exclIDs = exclIDs || "123,12";
    var inputParameters = webServiceName.toLowerCase() + ':' + parameterName.toLowerCase() + ':' + parameterValue + ':noofitems:' + noOfItems + ':excludeids:' + exclIDs;
    var clientcode = getCryptoToken(inputParameters);
    //Build JSONp query
    eval("data={" + parameterName.toLowerCase() + ":" + parameterValue + ", noofitems: " + noOfItems + ", excludeids:" + exclIDs + ",  clientcode:'" + clientcode + "' }");

    $.getJSON('https://abc.com/Service.svc/' + webServiceName + '?callback=?', data, function (data2) {
        var template = $.templates(templName);
        var htmlOutput = template.render(data2);
        $(domElement).append(htmlOutput);
        IDstoExclude = data2.IdsInThisList;

    });

Пробовал ниже, но не повезло: var IDstoExclude = "123";

function callService1() {
    return $.ajax()
        .then(function(response) {
            callListService('getArticleTypelistById', 'Atid', 87, 10, '#LeftSideContent1', '#tmplLeftSideContent1', IDstoExclude);
        });
}

function callService2() {
    callListService('getArticleTypelistById', 'Atid', 87, 10, '#LeftSideContent1', '#tmplLeftSideContent1', IDstoExclude)
}

$.when(callService1()).then(callService2);
  • 1
    Здесь вам придется объяснить контекст, и почему вы не можете просто поместить два простых вызова функций один за другим.
  • 1
    Сначала мы должны увидеть, как определены callService1 и callService2.
Показать ещё 5 комментариев
Теги:

1 ответ

0
Лучший ответ

Чтобы это решение работало так, как вы ожидаете, ваш код должен выглядеть примерно так:

function callService1(p1, p2, ...) {
    return $.ajax(...)
        .then(function(response) {
            return something;
        });
}

function callService2(something_from_s1) {
    // work with something_from_s1 var
}

$.when(callService1(...)).then(callService2);

Рекомендации:

  • 0
    Я должен отредактировать вопрос, не могли бы вы предложить, я думаю, вы достаточно близки к решению.
  • 0
    @ user3045352: Я уверен, что вы можете сделать это сами :-)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню