【发布时间】:2016-05-22 01:59:26
【问题描述】:
我已经用 JavaScript 编程了几年,直到最近才听说过 Promise 这个词。我在网上阅读了多篇关于它的文章,但仍然不明白 Promise 是什么。我没有看到任何严格的定义。我看到的每个例子都是我已经知道如何解决的问题。例如,
get('story.json').then(function(response) {
console.log("Success!", response);
}, function(error) {
console.error("Failed!", error);
});
来自https://davidwalsh.name/promises 我早就知道该怎么做了
$.ajax({
url : 'story.json',
method : 'GET',
success : function(response) { console.log("Success!", response); },
error : function(error) { console.error("Failed!", error); }
});
那么我是否在不知道术语的情况下使用了 Promise 的概念?或者我错过的大型派对在哪里?
【问题讨论】:
-
你的第二个例子是一个 promise 的 jQuery 实现。
-
@fskirschbaum 一点也不...
-
@plalx 当然可以。当然,虽然它取决于您正在使用的 jQuery 版本,但它是延迟的,并且给出了与提问者所说的相同的“结果”,但本质上,是的,它是相同的概念。另外,我必须这样做。 jQuery !== JavaScript
-
这里的语法当然不是最新的。现在您真的想使用带有
.done()的链,而不是传递设置对象。您的问题的答案有点复杂,但是使用success:或.done()回调函数的 XHR 对象延迟的概念类似但不是,实际上并不是 Promises。 jQuery Deferred, jQuery .promise, JavaScript Promise Object
标签: javascript jquery ajax asynchronous promise