2017-01-01 2 views
0

Я использую модуль promis для возврата моих данных json из модуля запроса, но каждый раз, когда я его запускаю, он дает мне это.Node.js обещание запроса return

Promise { _45: 0, _81: 0, _65: null, _54: null } 

Я не могу заставить его работать, любой знает проблему? вот мой код:

function parse(){ 
return new Promise(function(json){ 
    request('https://bitskins.com/api/v1/get_account_balance/?api_key='+api+'&code='+code, function (error, response, body) { 
     json(JSON.parse(body).data.available_balance); 
    }); 
}); 
} 

console.log(parse()); 
+0

Обещания вернуть обещание, контракт, который будет разрешать (.then) или отклонять (.catch) с некоторыми данными на более позднем этапе. Я предлагаю прочитать их. Ваша регистрация возвратила обещание. Ваш запрос не вернулся в этот момент. – ste2425

ответ

4

Обещание - это объект, который служит заполнитель для будущего значения. Функция parse() возвращает этот объект обещания. Вы получаете будущую стоимость в том обещании, прикрепив .then() обработчик обетованию, как это:

function parse(){ 
    return new Promise(function(resolve, reject){ 
     request('https://bitskins.com/api/v1/get_account_balance/?api_key='+api+'&code='+code, function (error, response, body) { 
      // in addition to parsing the value, deal with possible errors 
      if (err) return reject(err); 
      try { 
       // JSON.parse() can throw an exception if not valid JSON 
       resolve(JSON.parse(body).data.available_balance); 
      } catch(e) { 
       reject(e); 
      } 
     }); 
    }); 
} 

parse().then(function(val) { 
    console.log(val); 
}).catch(function(err) { 
    console.err(err); 
}); 

Это асинхронный код поэтому единственный способ получить значение из обетование через .then() обработчика.

Список изменений:

  1. Добавить .then() обработчик на возвращенном объекте обещает получить конечный результат.
  2. Добавить .catch() обработчик на возвращенном обещании объект для обработки ошибок.
  3. Добавить проверку ошибки на err значение в request() callback.
  4. Добавить TRY/поймать вокруг JSON.parse(), так как он может бросить, если недействителен JSON
+0

Спасибо, человек, многому научился :) –