Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用允诺的顺序呈现

使用允诺的顺序呈现
EN

Stack Overflow用户
提问于 2021-02-24 04:37:40
回答 1查看 17关注 0票数 0

我有一个观点,我想按日期顺序提出10个项目。这个数据(10个项)是从API中获取的,并且已经按日期进行了排序。快速抽样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "meta": { ... },
  "data": [
    {
      "id": 4891,
      "date": "February 23rd, 2021",
      "photo": "",
    },
    {
      "id": 3126,
      "date": "February 22nd, 2021",
      "photo": "",
    },
    {
      "id": 7895,
      "date": "February 21st, 2021",
      "photo": "123-sesame-st-bd088111.jpg",
    }
  ]
}

我已经包括了一张照片,以帮助可视化。在一些场景中,比如带小猫的卡片,我已经从最初的数据加载中知道了照片资产。如果我没有已知的照片资产,比如带房屋的卡片,我会从一个辅助API调用中获取这些图像资产。

我试图依靠承诺,以维持秩序时,把这些项目的视图。注意每张卡片底部的日期,从左到右阅读,这是无效的。如何维护每个项的呈现顺序,就像从初始数据加载返回的顺序一样?

下面是我当前的代码,为了更好地关注核心逻辑,删除了一些内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ready(() => {

    const cards = document.getElementById("cards")

    function fetchPhoto(id) {
        return fetch(`https://api.com/photo/${id}`)
            .then((res) => { return res.json() })
            .then((res) => {
                return res.photo
            })
    }

    function renderCard(item, photo) {
        let postCard = document.createElement('div')
        postCard.innerHTML = `<div>...${photo}...</div>`
        return postCard
    }

    function createCard(item) {
        if (item.photo) {
            return new Promise((resolve, reject) => {
                resolve(renderCard(item, item.photo))
            });
        }
        return fetchPhoto(item.id).then(photo => {
            return renderCard(item, photo)
        });
    }

    function loadRecent() {
        fetch('https://api.com/items?limit=10')
            .then((res) => { return res.json() })
            .then((res) => {
                res.data.forEach(item => {
                    createCard(item).then(card => {
                        cards.appendChild(card)
                    })
                })
            })
    }

    loadRecent()

}
EN

回答 1

Stack Overflow用户

发布于 2021-02-24 05:18:26

我选择接受托马斯的建议,先呈现卡片,然后加载图像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ready(() => {

    const cards = document.getElementById("cards")

    function fetchPhoto(id) {
        fetch(`https://api.com/photo/${id}`)
            .then((res) => { return res.json() })
            .then((res) => {
                document.getElementById(`photo-${id}`).src = res.photo
            })
    }

    function renderCard(item, photo) {
        let postCard = document.createElement('div')
        postCard.innerHTML = `<div>...<img id="photo-${item.id}" src="${photo}"></img>...</div>`
        cards.appendChild(postCard)
        return true
    }

    function createCard(item) {
        let photo = 'https://via.placeholder.com/150x120';
        if (item.photo !== '') {
            photo = item.photo
        }
        return new Promise((resolve, reject) => {
            resolve(renderCard(item, photo))
        });
    }

    function loadRecent() {
        fetch('https://api.com/items?limit=10')
            .then((res) => { return res.json() })
            .then((res) => {
                res.data.forEach(item => {
                    createCard(item).then(() => {
                        if (item.photo == '') {
                            fetchPhoto(item.id)
                        }
                    })
                })
            })
    }

    loadRecent()

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66351082

复制
相关文章
信息的组织和呈现
1. 信息的组织往往比信息本身更重要。就像奈斯比特说的,"信息有合作增强的作用,也就是整体的值大于部分的和"。 通俗的说,组织信息的目的就是要将相关的信息放在一起。 2. 常见的信息组织方式可以分为两大类:符号学上的组织方法(利用信息的外在特征)和语义学上的组织方法(利用信息的内容)。 3. 符号学上的组织方法又可分为三种: a)字顺组织法:这是最常见的组织方法之一,比如词典和"按姓名拼写排序"。 b)地点法:按照信息的地点特征组织在一起。 c)时序法:按照信息的时间特征组织在一起,比如年鉴。 4. 语义学
ruanyf
2018/04/13
8980
Grafana使用mysql作为数据源,呈现图表
近期在使用python写一套模拟API请求的监控项目,考虑数据可视化这方面就采用grafana来呈现,下面来看看怎么弄。
Devops海洋的渔夫
2019/05/31
20.9K0
Grafana使用InfluxDB作为数据源,呈现图表
下面就在Grafana执行SELECT * FROM "CPU_All3" WHERE host =~ /qc_predepl_cms/查询出表里面的数据,并呈现在Grafana中。
Devops海洋的渔夫
2019/05/31
1.1K0
顺序表的定义_顺序表的逻辑顺序和物理顺序
来看一个生活中的例子:周末和朋友一起吃火锅,人非常多,我们需要在等候区等候,这个等候区就与顺序表有非常多的相似之处,借助它去理解顺序表的特点。首先,在等候区有非常多的椅子,这些椅子往往是排成一排连续排放的,中间不会空出很大的空间造成浪费。这就与在顺序表中选取存储单元的方法是一样的,我们会选取一段地址连续的存储单元去存放顺序表。接着工作人员会安排我们在椅子上连续的坐下等候。在存储单元当中去进行数据的存放是一样的,也是依次地存放线性表当中的数据元素,中间也不会空出许多存储单元造成空间的浪费。最后结伴而行的朋友也会坐在相邻的椅子上,这与顺序表的存放是相同的。在逻辑上相邻的两个元素在物理位置上也要保证它相邻,也会把它存放在相邻的存储单元上。在这个例子当中,其实椅子就代表着存储单元,而每一个等候的人就是要存放的数据元素。来总结一下顺序表的特点:
全栈程序员站长
2022/09/20
1.6K0
苹果系统使用之输入法的呈现与设置问题
    新装的系统,总是纠结的出现各种问题。今天解决的就是装了Mac OS X 10.6(苹果系统)之后,输入法找不到,用快捷不能设置的问题。 刚开始使用mac os x 系统,其实说用也谈
磊哥
2018/05/09
1.1K0
苹果系统使用之输入法的呈现与设置问题
控件的呈现方法(Rendering)的内核
Asp.net中所有的控件都是从System.Web.UI.Control类,在control类中定
Java架构师必看
2021/03/22
5100
SlideShare案例研究:使用Fluentd呈现统一数据
SlideShare于2006年10月成立,旨在促进在线知识共享,已发展成为世界上最大的共享演示文稿和其他内容的社区。在2013年第四季度,SlideShare平均每月有6000万独立访问者和2.15亿页面浏览量,用户查看演示文稿、信息图表、文档、视频和PDF。
CNCF
2019/12/04
1.4K0
SlideShare案例研究:使用Fluentd呈现统一数据
.NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI
在日常开发 webapi 时,我们往往会集成 swagger doc 进行 api 的文档呈现,当api数量比较多的时候就会导致 swagger ui 上的 api 因为数量太多而显得杂乱,今天教大家如何利用 GroupName 属性来对 api 的 Controller 进行分组,然后利用 swagger ui 上的 Select a definition 切换功能进行多组 Controller 的切换。
乌拉栋
2022/10/28
1.1K0
.NET WebAPI 使用 GroupName 对 Controller 分组呈现 Swagger UI
python 数据图表呈现
平时压力测试,生成一些数据后分析,直接看 log 不是很直观,前段时间看到公司同事分享了一个绘制图表python 模块 : plotly, 觉得很实用,利用周末时间熟悉下。
orientlu
2018/09/13
1.2K0
python 数据图表呈现
DevExpress数据绑定呈现
数据库这里为了方便演示,用的SQL Server 由于我数据库中的表有8列数据,这里添加8列,并设置列名和绑定的数据名称:
别团等shy哥发育
2023/02/27
1.6K0
DevExpress数据绑定呈现
顺序表常用使用方法
复习了一些数据结构的东西,打算把常用的数据结构都实现一下,慢慢来,慢慢来 顺序表是用一组地址连续的存储单元依次存储线性表的数据元素。这里一般考虑的是有序的顺序表。因为如果C语言实现这种数据结构可以使用指针, 在JAVA中没有指针,用 对象,并且是用一种动态的数组ArrayList可以实现,但是没有用,增加内存方面不知道有什么比较好的解决方案。编码比较水,勤加练习~~
张凝可
2019/08/22
5230
使用 ConcatAdapter 顺序连接其他 Adapter
ConcatAdapter 是 recyclerview: 1.2.0-alpha 04 中提供的一个新组件,它可以帮我们顺序地组合多个 Adapter,并让它们显示在同一个 RecyclerView 中。这使您可以更好地封装 Adapter。您不必再将许多数据源组合到一个 Adapter 中,从而在减少 Adapter 复杂度的同时也让它们可以被复用。
Android 开发者
2020/11/16
1.2K0
使用 ConcatAdapter 顺序连接其他 Adapter
使用 ConcatAdapter 顺序连接其他 Adapter
ConcatAdapter 是 recyclerview: 1.2.0-alpha 04 中提供的一个新组件,它可以帮我们顺序地组合多个 Adapter,并让它们显示在同一个 RecyclerView 中。这使您可以更好地封装 Adapter。您不必再将许多数据源组合到一个 Adapter 中,从而在减少 Adapter 复杂度的同时也让它们可以被复用。
Android 开发者
2023/09/01
8300
使用 ConcatAdapter 顺序连接其他 Adapter
4. Grafana使用mysql作为数据源,呈现图表
近期在使用python写一套模拟API请求的监控项目,考虑数据可视化这方面就采用grafana来呈现,下面来看看怎么弄。
Devops海洋的渔夫
2022/01/14
2.7K0
4. Grafana使用mysql作为数据源,呈现图表
3. Grafana使用InfluxDB作为数据源,呈现图表
下面就在Grafana执行SELECT * FROM "CPU_All3" WHERE host =~ /qc_predepl_cms/查询出表里面的数据,并呈现在Grafana中。
Devops海洋的渔夫
2022/01/14
6040
3. Grafana使用InfluxDB作为数据源,呈现图表
业务流程(代码呈现)
上图是对save和saveScore两个接口的流程抽象,save是上传答题数据,saveScore则是上传答题分数,为保证幂等和防止并发调用,这两个接口都加了分布式锁(还是两层哦)。第一层使用的是不同的锁,因为处理的是不同的表,第二层处理的是相同的表,为了保证数据在某个维度上的唯一,所以使用了相同的锁。本篇文章则主要记录下表C中的逻辑唯一键出现重复数据的问题排查过程,该问题包含了对锁、事务及Mybatis框架的综合运用和理解。
夜勿语
2022/05/18
7370
业务流程(代码呈现)
线性表的顺序存储——顺序表
线性表的顺序存储又称为顺序表, 它是用一组地址连续的存储单元依次存储线性表中的数据元素. 逻辑上相邻的两个数据元素在物理位置上同样相邻.
后端码匠
2021/01/20
8660
线性表的顺序存储——顺序表
实战教学--怎样提高报表呈现的性能?
报表的性能很重要,是一个总被谈及的问题,跑的慢的报表用户体验恶劣,无法忍受。解决这些慢的性能问题,也成了项目方和工程师头疼的事情。一出状况,就得安排技术好的,能力强的工程师去救火,本来利润就薄,还得不断的追加人工成本,而且工程师有时候也无能为力,并不是所有的性能问题都能靠程序员能力解决的
不吃西红柿
2022/10/31
4040
实战教学--怎样提高报表呈现的性能?
顺序表示的线性表——顺序表
一、定义 线性表是由n个类型相同的数据元素组成的有限序列,记为(a1,a2,...,ai-1,ai,ai+1,...,an)。 二、特点 逻辑上相邻的元素,在物理上也相邻。只要确定了第一个元素的起始位置,线性表的任一元素都可以随机存取,因此,线性表的顺序存储结构是一种随机存取的存储结构。 三、存储结构 #define ListSize 100 typedef struct { DataType list[ListSize]; //DataType表示数据类型,list用于存储线性表中的数据元素
Zoctopus
2018/06/04
9630
执行start()的顺序不代表线程执行的顺序
执行start()的顺序不代表线程执行的顺序 import org.omg.CORBA.PUBLIC_MEMBER; /** * Created by wuyupku on 2019-04-12 12:24 * * @Beijing CHINA */ public class Demo01 { public static void main(String[] args) { mythread thread1 = new mythread(1); mythrea
葆宁
2019/04/18
2.6K0
执行start()的顺序不代表线程执行的顺序

相似问题

使用允诺顺序执行函数

13

使用允诺顺序加载脚本

10

呈现整个承诺对象的允诺值

12

为什么允诺对象阻止呈现?

13

按顺序返回允诺结果,使用库dom-to。

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文