Javascript 写一个承诺
我有一个小部件Javascript 写一个承诺,javascript,promise,Javascript,Promise,我有一个小部件,还有一些代码可以像这样打开对话框 $("#foo").click(); 现在我需要设置一些代码,以便在用户进行选择并关闭对话框后运行 我知道这是一种承诺模式,但我不知道如何去写一个承诺。有人能给我一些指导吗?在输入小部件上放置更改处理程序没有问题,但我需要编写如下代码: $("#foo").click().then(function(){ $("#theForm").submit(); }); 据我所知,满足后条件的情况(用户选择一个文件并单击“确定”)被称为已解决,而对
,还有一些代码可以像这样打开对话框
$("#foo").click();
现在我需要设置一些代码,以便在用户进行选择并关闭对话框后运行
我知道这是一种承诺模式,但我不知道如何去写一个承诺。有人能给我一些指导吗?在输入小部件上放置更改处理程序没有问题,但我需要编写如下代码:
$("#foo").click().then(function(){
$("#theForm").submit();
});
据我所知,满足后条件的情况(用户选择一个文件并单击“确定”)被称为已解决,而对于不满足后条件的情况,我现在无法使用另一个名称
那些建议我这么做的人
$("#foo").change(function(){
$("#theForm").submit();
}
我知道这个解决方案,但它并没有教会我写承诺的任何东西。世界上有大量关于承诺的文档,但这里有一个简单的例子:
var promise = new Promise(function(resolve, reject) {
// do a thing, possibly async, then…
if (/* everything turned out fine */) {
resolve("Stuff worked!");
}
else {
reject(Error("It broke"));
}
});
然后:
promise.then(function(result) {
console.log(result); // "Stuff worked!"
}, function(err) {
console.log(err); // Error: "It broke"
});
那可能会有帮助!祝您好运您需要使用
承诺
构造函数,它将使您能够解决承诺:
var p = new MyLib.Promise(function(resolver) {
$("#foo").one("click", resolver);
}); // a promise that resolves with the next click on #foo
p.then($.fn.submit.bind($("#theForm"))); // or whatever
使用jQuery,您需要使用:
如果您正在寻找一个用于编码事件的功能接口,请查看FRP,主要是BaconJS,它在jQuery的基础上构建了所有您想要的东西,而且非常漂亮,我是promise的支持者,但我相信它提供了比功能性UI编码更坚实的抽象。我不认为这是一个重复的问题。当然,另一个问题的答案对于这个问题来说是合适的,但是他们来自不同的思维框架,产生不同的搜索词。我认为这个问题的价值在于它所支持的替代搜索向量。因为即使标记为“复制”,它仍然可以达到这个目的,我想我们已经完成了,但我希望有另一个标记“等效”。Bergi的答案很好,但这正是我想要的,特别是教程。在发布了这个问题后,我在msdn上找到了一篇关于这个主题的文章,但它有点IE特有;和其他人一样,我使用jQuery,因此我将利用您在延迟模式上的链接。
$.fn.nextEvent = function(type) {
var d = new $.Deferred();
this.one(type, function() {
d.resolveWith(this, arguments);
});
return d.promise();
};
$("#foo").nextEvent("click").then(function(e) {
$("#theForm").submit();
});