async.js ( https://github.com/caolan/async ) を見てください。新しい概念は導入されていませんが、コールバック スープをより管理しやすく読みやすいものに合理化できます。たとえば、代わりに
foo(data, (err, result) ->
bar( result, (err, omgimtired) ->
foobar(omgimtired, (err....) ->
...
)
)
)
関数のリストを使用async.waterfall
してフィードし、次々と呼び出すことができます。
Promise は非常に単純です (それらに気を配ることができれば)。それらは、特定の操作の結果であるオブジェクトを記述します。すべての関数から、結果を表すオブジェクトを返すとします。ここで、すべての結果に関数 ( then(...)
) があり、「成功」完了のコールバックと失敗した完了のコールバックが渡されると想像してください。簡単ですよね?プロミスを特別なものにする唯一のことは、このコールバックが別のプロミスを返す可能性があることです。これは、「囲んでいる」プロミスが満たされるために最初に満たされる必要があります。等々。一連のコールバックを一連の呼び出しに置き換えるだけです.then(...)
。
Parse.User.logIn("user", "pass", {
success: function(user) {
query.find({
success: function(results) {
results[0].save({ key: value }, {
success: function(result) {
// the object was saved.
}
});
}
});
}
});
対
Parse.User.logIn("user", "pass").then(function(user) {
return query.find();
}).then(function(results) {
return results[0].save({ key: value });
}).then(function(result) {
// the object was saved.
});
http://blog.parse.com/2013/01/29/whats-so-great-about-javascript-promises/から
このクールエイドhttp://www.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript
を、同様のトピックに関する非常に徹底的な回答から飲みますの Deferred、Promise、Future の違いは何ですか?