2016-05-23 4 views
2

Ich verwende bluebird in meiner App und ich benutze Babel, um meinen Code in es5 zu kompilieren. Allerdings habe ich immer diese Warnung bekommen und ich habe überprüft, dass jedes Stück Promise return Wert hat.ein Versprechen wurde in einem Handler erstellt, wurde aber nicht in Bluebird zurückgegeben

Hier ist mein Code:

Promise.promisifyAll(fs); 

use.login().then((result) => { 
    console.log(result); 
    doSomething('../test.png'); 
}); 

function doSomething(filepath) { 
    return fs.readFileAsync(filepath).then((bufs) => (
     doPost(url, bufs, filepath) 
     .then((res) => (
      res.error ? Promise.reject(res.error) : Promise.resolve(res)) 
     ) 
)).catch((err) => { 
    console.error(err); 
    return err; 
    }); 
} 


function doPost(url, bufs = null, filepath = null) { 
    return new Promise((resolve, reject) => (
    unirest.post(url) 
     .headers(config.Headers) 
     .timeout(120000) 
     .field(bufs) 
     .attach('files', filepath) 
     .end((res) => (
     res.error ? reject(res.error) : resolve(res) 
    )) 
)); 
} 

Details von Fehlermeldungen:

Warning: a promise was created in a handler but was not returned from it 
at doSomething (/home/test/Documents/test/lib/abc.js:2:27) 
// This line number is referred to the compiled code which is equal to line 4:12 in the above code 
+0

Wo rufst du 'doSomething' an? Ist das dein ganzer Code? – Bergi

+0

@Bergi Nein, das ist nicht mein ganzer Code, aber ich habe nur die Warnung im obigen Code bekommen. Ich werde 'DoSomething' nennen, wenn ich eine Datei lesen muss, z. 'doSomething ('../ test.png')' – CYB

+0

Ich meinte damit, dass du 'doSomething' von einem Promise-Handler nennst, der nichts zurückgegeben hat. Ist das der gesamte Aufruf der Warnung? Es wäre hilfreich, wenn Sie den ganzen Code zeigen könnten. – Bergi

Antwort

0

Dank @Bergi, dass ich nicht das Versprechen Stapel hat zu überprüfen, wo ich doSomething so die Warnung verschwunden, nachdem ich rufe ändern Mein Code wie unten

use.login().then((result) => { 
    console.log(result); 
    doSomething('../test.png'); 
    return null; // Add this line to make promise return anything, then the warning gone 
});