2016-05-25 2 views
1

A Использование текущего клиента Soode для вызова функции мыльного обслуживания, когда я отправляю HTTP-запрос на сервер.Создание и использование NodeJS-soap-клиента синхронно

Проблема заключается в том, что запрос возвращается до завершения вызова службы мыла, что не возвращает никаких данных.

Проблемы здесь в том, что логика асинхронна, но мне нужно сделать ее синхронной.

Пожалуйста, любезно направьте меня в правильное решение.

function soap_get_items(req,res){ 
    var resp = []; 

    var soap = require('soap'); 
    var url = 'http://example.com/example.wsd?singleWsdl'; 
    var args = {name:"N.Hillary"}; 

    soap.createClient(url, function(err, client) { 
     client.exampleSoapFunction(args, function(err, result) { 
      resp = result; 
     }); 
    }); 

    json_resp = JSON.stringify(resp); 
    res.end(json_resp); 
} 
+1

Node.js является однопоточным. Мир остановится, пока вы будете ждать синхронного ответа на мыло. –

+1

Просто позвоните 'res.end (result)', где вы получите свой ответ. –

+0

Ваш код * асинхронный *, это означает, что вам нужно будет сделать весь код, относящийся к «результату» * внутри * обратного вызова. –

ответ

4

Вам не нужно делать это синхронно. Вам просто нужно использовать обратный вызов:

soap.createClient(url, function(err, client) { 
    client.exampleSoapFunction(args, function(err, result) { 
     res.end(JSON.stringify(result)); 
    }); 
}); 
+0

Спасибо всем, это дало мне лучшее понимание того, как с ним работать. –

+0

lol модератор "H. Pauwelyn ツ" отклонил мое редактирование и повторил то же самое сам и сам одобрил, но сделал это хуже. Это похоже на мошенничество с репутацией: D –

+0

скриншот для комментариев - http://i.imgur.com/HUvORNe.png –

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

  • Нет связанных вопросов^_^