2016-06-15 14 views
0

私がしばらく前に書いた公共図書館Bluebirdは、Warning: a promise was created in a handler but was not returned from itで私に警告している理由を見つけるのに苦労しています。Bluebirdはリーク警告を約束します

私はそれを何度も釘付けにしてから、ほとんど諦めてしまいました。

完全なテストアプリケーション:

'use strict'; 

var promise = require('bluebird'); 
var spex = require('spex')(promise); 

function factory(index) { 
    if (index < 2) { 
     return promise.resolve(index); 
    } 
} 

spex.sequence(factory) 
    .then(data=> { 
     console.log("success"); 
    }) 
    .catch(error=> { 
     console.log("error"); 
    }); 

完全なコンソール出力:

Warning: a promise was created in a handler but was not returned from it 
    at Object.factory (D:\NodeJS\tests\test4.js:8:24) 
    at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:69:44) 
    at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9) 
    at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28) 
    at next (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:160:25) 
    at $utils.resolve.call.reject.index (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:144:25) 
    at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:86:17) 
    at D:\NodeJS\tests\node_modules\spex\lib\utils.js:80:25 
    at processImmediate [as _immediateCallback] (timers.js:383:17) 
From previous event: 
    at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:77:22) 
    at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9) 
    at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28) 
    at D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:184:9 
From previous event: 
    at promise (D:\NodeJS\tests\node_modules\spex\lib\index.js:96:24) 
    at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:100:12) 
    at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:193:29) 
    at Object.<anonymous> (D:\NodeJS\tests\test4.js:12:6) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:441:10) 
    at startup (node.js:139:18) 
    at node.js:968:3 

success 
  • SPEXライブラリのバージョン - 任意の
  • ブルーバードバージョン - DEBUGモード上で任意の3.X、。
  • Node.jsのバージョン - 任意の
  • OS - 任意の
+0

https://github.com/petkaantonov/bluebird/blob/master/docs/docs/warning-explanations.md – Amit

+0

@Amit、ありがとうございますが、同じ警告が報告された場合を含め、Bluebirdのドキュメント全体を10回以上読みました。私は私の質問を出版する前に非常に良い研究をしました。通常、私は今までにそれを見つけたでしょう。私は約束をよく知っていますが、私はこの1つにこだわっています... –

+1

そして、提案したように 'null'を返そうとしましたか? – Amit

答えて

1

溶液(hereを示唆したように)何かを返さないonFulfilled関数からreturn nullにあります。例えば

.then(data=> { 
    console.log("success"); 
}) 

はおそらくあるべき:

.then(data=> { 
    console.log("success"); 
    return null; 
}) 
+0

素晴らしい!短く、華麗で、ついにそれは働いた! :)))) どうもありがとうございます!!!! –

関連する問題