promise
promise
“Promises” 代表着在javascript程序里下一个伟大的范式,但是理解他们为什么如此伟大不是件简单的事。它的核心就是一个promise代表一个任务结果,这个任务有可能完成有可能没完成。
保存一个Prase.Object对象,这是个异步操作,在旧的回调范式中,你的代码可能这样写:
object.save({ key: value }, {
success:function(object) {
// the object was saved.
},
error:function(object, error) {
// saving the object failed.
}
});
在新的Promise范式中,同样的代码你可以这样写:
object.save({ key: value }).then(
function(object) {
// the object was saved.
},
function(error) {
// saving the object failed.
});
promises的真正强大之处在于多重的链接,当调用promise.then(func)时返回一个新的promise,它不会执行直到上一个完成。但是这里有一种特殊的情况,如果我的回调通过then返回一个新的promise,那么通过then返回的promise将不会执行,直到回调执行完成。
假设你写了段登陆的代码,查找对象然后更新它。在旧的回调范式中,你可以使用金字塔式的代码完成:
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.
}
});
}
});
}
});
promise链式的结构,使代码看起来更舒服了:
Parse.User.logIn("user","pass").then(function(user) {
returnquery.find();
}).then(function(results) {
returnresults[0].save({ key: value });
}).then(function(result) {
// the object was saved.
});

浙公网安备 33010602011771号