Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Q = require('q'),
- https = require('https')
- ;
- var getRates = function() {
- var deferred = Q.defer(),
- url = 'https://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.xchange+where+pair+=+%22USDRUB,EURRUB%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback='
- ;
- https.get(url, function(res) {
- // deferred.resolve();
- var out = '';
- res.setEncoding('utf8');
- res.on('data', function(chunk){
- out += chunk;
- });
- res.on('end', function() {
- deferred.resolve(JSON.parse(out));
- });
- }).on('error', function(e) {
- deferred.reject(e);
- })
- //почему возвращаем deferred.promise а не deferred?
- return deferred.promise;
- };
- var someAsyncFunction = function(data) {
- var deferred = Q.defer();
- setTimeout(function() {
- deferred.resolve(data);
- }, 1000);
- return deferred.promise;
- };
- //Что не так с этим кодом c точки зрения Promise? Как исправить?
- Q()
- .then(function() {
- getRates()
- .then(function(data) {
- someAsyncFunction(data)
- .then(function(data) {
- console.log('Конец!', data);
- })
- .catch(function() {
- console.log("Error in async func!")
- })
- .done();
- })
- .catch(function() {
- console.log("Error happens");
- })
- .done();
- });
- //Ответ:
- Q()
- .then(function() {
- return getRates();
- })
- .then(function(data) {
- return someAsyncFunction(data);
- })
- .then(function(data) {
- console.log('Конец!', data);
- })
- .catch(function(err) {
- console.log('Err', err);
- })
- .done();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement