私は知っている共通の話ですが、私はJSと約束の世界についての私の理解を確認したいと思います。JS - 約束を待っています
だから私はthen
ブロックが実際に終了するために、上記のセグメントを待たないという点で失敗している次のコードセグメントを持っています。つまり、私はokCheck
の最終的な/正しい値を得ていません。したがって、この問題を解決するために
var okCheck = false;
User.findOne({publicID: id}, function (err, userInfo) {
if (userInfo.checked.indexOf(id) > -1){
okCheck = true;
}
})
.then(function() {
//do some additional stuff using the boolean okCheck
}
- 私はreturn
を使用する必要があります理解して何から - これが正しいのですか?
var okCheck = false;
User.findOne({publicID: id}, function (err, userInfo) {
if (userInfo.checked.indexOf(id) > -1){
okCheck = true;
}
return okCheck;
})
.then(function() {
//do some additional stuff using the boolean okCheck
}
これは正しいですか?つまり、私はいつもokCheckの最終的な価値を保証しますか?
ありがとうございました。
'findOne'関数は奇妙に見えます:あなたのコードから、コールバック引数をとるように見え、**は約束を返します。どちらのメカニズムもほぼ同じ目的を果たしています。コールバック**または**約束を使用することが期待されます。あなたはそれを正しく呼んでいると確信していますか?コールバックと 'then'ハンドラの両方が呼び出されることを確認できますか?(例えば、それらの中に' console.log() 'コールを追加することによって)? –
これは問題ありません - 私はconsole.logを使ってそれを確認しました。私は以下の答えが良いと思っています - あなたはどう思いますか> – userMod2
答えを見ると、この特定の 'findOne'関数は[Sails.jsの一部です](http://sailsjs.org/documentation/reference/waterline-orm/models/find-one)を参照してください。使用しているライブラリについて言及していれば、コードがどのような機能を使用しているのかを推測する必要がないので、はるかに明確になっています。 ;-) –