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.
});

posted @ 2019-12-30 16:14  ZSYblog  阅读(184)  评论(0)    收藏  举报