2014-05-28 3 views
1

Я новичок в Worklight. Я пытаюсь объединить ответы от нескольких WL.Server.invokeHttp (input).Подсветка вызова WL.Server.invokeHttp (ввод) в цикле

например.

call1: response1 = WL.Server.invokeHttp(input1) 
lets say in response1 I get students(names) list loop for every student 
call(n): 
response(n) = WL.Server.invokeHttp(student) lets say response(n) I get 
the score of student 

Теперь я пытаюсь объединить оценку каждого студента в списке учеников.

Добавление кода:

function getStudentsMarks() { 
    path = "/edu/students"; 
    WL.Logger.info("path: "+path); 
    var input = { 
     method : 'get', 
     returnedContentType : 'json', 
     path : path 
    }; 
    var response = WL.Server.invokeHttp(input); 
    var students = response.students; 
    for (var i = 0; i < students.length; i++) { 
     var student = students[i]; 
     WL.Logger.info("student id: " + student.id); 
     resp = getStudentMarks("students/"+student.id); 
     students[i].marks = resp; 
    } 

    return response; 
} 

function getStudentMarks(path) { 
    path = "/edu/"+ path; 
    var input = { 
     method : 'get', 
     returnedContentType : 'json', 
     path : path 
    }; 
    var response = WL.Server.invokeHttp(input); 

    return response; 
} 

Спасибо заранее.

+0

Идея кажется правильным, но необходимо проверить с данными - вы пробовали? Любые ошибки? Ожидаемые результаты? –

+0

Но ваша процедура в настоящее время возвращает «ответ» в конце. Я думаю, вы хотите «учеников»? –

+0

Я пробовал, но окончательный ответ длился долго. Я также беспокоюсь, если какой-либо вызов службы не удался. – gaurav001

ответ

2

Ваш вопрос немного широк и не содержит никакого кода.

Вы еще что-нибудь попробовали?

Важно помнить, что код процедуры написан на JavaScript. Поэтому, если вы знаете, как это сделать в JavaScript, вы также сможете сделать это в коде процедуры.

Из чего я понимаю, что вам нужно сделать, это создать 1 процедуру адаптера. Эта процедура будет иметь разные вызовы для разных запросов HTTP-бэкэнд. В JavaScript напишите любую логику слияния, которая вам нужна. В конце цикла верните обработанные данные, которые вы хотите.

Прежде чем углубиться в ваш пример, возможно, попробуйте только с одним вызовом, а затем попытайтесь объединить 2. Как только вы будете удобно писать код, попробуйте свое решение.

Обратите внимание, что один HTTP-адаптер может подключаться только к одному доменному домену. Поэтому, если ваш пример требует нескольких доменных имен, вашему адаптеру «mashup» необходимо вызвать другие адаптеры. Если все ваши HTTP-запросы указывают на одно и то же имя домена, то достаточно одного адаптера.

Я рекомендую прочитать это так: https://www.ibm.com/developerworks/community/blogs/worklight/entry/handling_backend_responses_in_adapters

+0

добавленный код. пожалуйста, предложите, если это правильный способ сделать это. – gaurav001

Смежные вопросы