2016-05-21 6 views
0

В моем коде я беру hosts из db и обрабатываю его в обратном вызове. Как вернуть обработанный файл hosts?Возвращаемая стоимость внутри обратного вызова с обещанием Q?

var db = new sqlite3.Database(DB); 
var all = Q.nbind(db.all, db); 

function getHosts() { 
    return all('SELECT host FROM hosts ORDER BY host DESC', function(err, rows){ 
     // rows: [ { host: 'z' }, { host: 'a' } ] 
     // transform into hosts: ['a','z'] 
     var hosts = []; 
     var L = rows.length; 

     for (var i=0; i<L; i++) { 
      hosts.push(rows.pop().host); 
     } 
     // hosts = ['a','b', ... 'z'] 
     return hosts; // <-- doesn't work! 
    }); 
} 

ответ

0

Поскольку вы преобразование его в функцию посыла на основе, вы должны использовать его в качестве такового:

function getHosts() { 
    return all('SELECT host FROM hosts ORDER BY host DESC').then(function(rows) { 
     // rows: [ { host: 'z' }, { host: 'a' } ] 
     // transform into hosts: ['a','z'] 
     var hosts = []; 
     var L = rows.length; 

     for (var i=0; i<L; i++) { 
      hosts.push(rows.pop().host); 
     } 
     // hosts = ['a','b', ... 'z'] 
     return hosts; // <-- doesn't work! 
    }); 
} 

Я не имею catch() обработчика вот так его до вас, чтобы справиться это где-то.

+0

Спасибо! Именно то, что я искал. – cub01d

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

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