У меня проблема с попыткой превратить асинхронную функцию в синхронную.NodeJS: проблема с запросом асинхронная, синхронная, api
здесь метод из класса:
doPost: function(call, data) {
var uri = 'http://localhost/api/'+call;
var api = http.createClient(80, 'localhost');
var domain = 'localhost';
var request = api.request("POST", uri,
{'host' : domain,
'Content-Type' : 'application/x-www-form-urlencoded',
"User-Agent": this.userAgent,
'Content-Length' : data.length
});
request.write(data);
request.end();
request.on('response', function (response) {
response.on ('data', function (chunk) {
sys.puts(chunk);
try {
var result = JSON.parse(chunk);
//------------ the problem
return HOW_TO_RETURN_RESULT;
//------------ /the problem
}catch (err) {
return {'ok': 0, 'err': err}
}
});
});
},
Хотите использовать эту функцию таким образом:
result = obj.doPost('getSomeData.php', '&data1=foo&data2=bar');
Reagards
Том
Я читал о «обещаниях» в node.js, но не могу найти пример, соответствующий моему коду. – Tom
Посылы в значительной степени обратные вызовы в маскировке – Jakob
Кроме того, даже если обещания сделали то, что вы хотели, node.js не имеет их: http://japhr.blogspot.com/2010/04/no-more-promises- in-nodejs.html – Jakob