0
Довольно простой Node.js (консоль приложения) код Q не работает:Цепные Обещания Node.js с помощью
var request = require("request");
var q = require("q");
var data = new Object();
var deferred = new q.defer();
var url1 = "https://www.google.com"
var url2 = "https://www.yahoo.com"
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
console.log('begin data1');
requestData(url1) //Promises seem to be working fine here
.then(function() { console.log('finished data1'); }) //At this point, we go back to async, and everything from here down executes at the same time.
.then(function() { console.log('begin data2'); })
.then(function() { requestData(url2); }) //Expected behavior is that it should pause here, and execute everything below after the request is complete.
.then(function() { console.log('finished data2'); })
.then(function() { console.log(data); })
.then(function() { console.log('finished write2'); })
.then(function() { console.log('operation completed!'); });
function requestData(url) {
console.log(url);
data = new Object();
console.log(data);
deferred = new q.defer();
console.log(deferred);
request({
url: url,
json: true
}, function (error, response, obj) {
if (!error && response.statusCode === 200) {
data = obj;
deferred.resolve();
console.log(deferred);
} else {
console.log('err');
}
});
return deferred.promise;
}
Проблема после первого .then
заявления, все выполняется асинхронно. Я хочу, чтобы во второй раз я запускал вызов «requestData» как синхронный, как первый.
Простите мои консольные журналы для целей отладки.
Что я здесь делаю неправильно?
Да, это был он. Просто. Благодаря! – Jordan