栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Promise和AJAX有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Promise和AJAX有什么区别?

您对Promise和Ajax调用感到困惑。它们有点像苹果和小刀。您可以用刀切一个苹果,而刀是可以应用到苹果上的工具,但是两者是完全不同的。

承诺是用于管理异步操作的工具。它们跟踪异步操作何时完成以及它们的结果,并让您与其他代码或其他异步操作协调该完成和那些结果(包括错误条件)。它们本身实际上并不是异步操作。Ajax调用是一种特定的异步操作,可以与传统的回调接口一起使用或包装在promise接口中。

那么它们之间有什么区别呢?并且什么时候最好使用一个而不是另一个呢?

Ajax调用是一种特定类型的异步操作。您可以使用使Ajax调用或者与传统的回调

XMLHttpRequest
接口,也可以使Ajax调用(在现代浏览器),使用与承诺
fetch()
接口。

最近,我遇到了一个承诺,其中包含AJAX。为什么要在异步操作中放入异步操作?这就像在面包三明治中放一块面包。

您没有显示您正在谈论的特定代码,但是有时您想启动异步操作1,然后在完成异步操作后,希望他们启动异步操作2(通常使用第一个操作的结果)。在这种情况下,通常将一个嵌套在另一个内部。


您的代码示例在这里:

function threadsGet() {    return new Promise((resolve, reject) => {      $.getJSON('api/threads')        .done(resolve)        .fail(reject);      })}

被认为是一种承诺反模式。没有必要在此处创建新的诺言,因为

$.getJSON()
已经返回了您可以返回的诺言。您可以改为:

function threadsGet() {    return $.getJSON('api/threads');}

或者,如果您想将有些非标准的jQuery Promise“转换”为标准Promise,则可以执行以下操作:

function threadsGet() {    return Promise.resolve($.getJSON('api/threads'));}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368322.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号