【发布时间】:2017-02-06 15:55:22
【问题描述】:
promise 和 AJAX 调用都是异步操作。两者都可以发出 GET/POST 请求。 编辑:这是一个错误的陈述
那么它们之间有什么区别呢?什么时候最好使用一个而不是另一个?
另外,还有一件事:
最近我遇到了一个包含 AJAX 的 Promise。为什么将异步操作放在异步操作中?这就像把面包放在面包三明治里。
function threadsGet() {
return new Promise((resolve, reject) => {
$.getJSON('api/threads')
.done(resolve)
.fail(reject);
})
}
这里使用jQuery。 AJAX 调用具有 Promise 行为和属性。我之前没有得到,但这是我的想法:
我们可以在 Promise 中做一些事情。然后使用 AJAX 调用并在 done 函数中传递已解析的 Promise 逻辑。特别是在这个例子中没有。
现在我发现我把两者都搞混了。它们几乎是两种不同的东西。仅仅因为它们是异步的,并不意味着它们可以互换。
==============
编辑 2: 只是一些我觉得有用的材料:
【问题讨论】:
-
你能澄清一下你说你可以用 promise 发出 GET/POST 请求是什么意思吗?
-
Promise 本身没有发出 GET/POST 请求的机制。也许阅读Promises documentation?
-
Promise 是异步操作的接口。 ajax 请求是一种非常具体的异步操作。
-
为什么不直接使用
setTimeout而不是ajax 调用呢?这也只是一个异步操作。 -
@Bergi,感谢您的评论。这让我很震惊。 Promise 主要是为了移除回调地狱。它可以与 AJAX 和其他东西一起使用。但最终,主要思想是以更易于管理和阅读的方式链接异步操作。人!我读了很多遍,但我才意识到这一点......
标签: ajax asynchronous promise