mouyase
V2EX  ›  问与答

一个会出现部分完成的任务应该如何设计

  •  
  •   mouyase · Aug 13, 2024 via Android · 1323 views
    This topic created in 680 days ago, the information mentioned may be changed or developed.
    我是前端,正常异步任务都是用 promise 处理,这玩意正常应该是有成功和失败两个状态



    但是现在有这么一个问题需要处理。



    有两个异步任务拼在一起的异步任务。

    有可能会出现一个成功,一个失败的情况。



    这种情况应该如何设计比较合理。



    理论上失败的时候是需要知道失败原因并做后续处理的。



    我目前的想法是全都失败算失败,不管成功还是失败都算成功,返回数据的同时,返回 code 和 msg 用来处理失败。

    然后只有异常的时候才返回失败。



    不知道这样是否合理。
    Supplement 1  ·  Aug 13, 2024
    这个问题的重点是怎样定义状态。
    因为同时会有两个成功,一个成功一个失败,全部失败三种状态。
    然后如何分配状态和 resolve ,reject 。
    7 replies    2024-08-13 20:42:28 +08:00
    rrfeng
        1
    rrfeng  
       Aug 13, 2024
    两个 promise 可以获取到 4 种状态啊,不是每种都可以处理吗?
    Jaufey
        2
    Jaufey  
       Aug 13, 2024 via iPhone
    allSettled ,race ,any 选一个合适的。
    都要处理就 allsettled
    Jaufey
        3
    Jaufey  
       Aug 13, 2024 via iPhone
    不好意思,你这两个异步任务是串行的还是并行的呢,我说的是并行的情况。
    mouyase
        4
    mouyase  
    OP
       Aug 13, 2024
    @rrfeng 两个 promise 现在被包在同一个 promise 里了,所以一个成功一个失败的情况,我不知道如何设计会好一点
    mouyase
        5
    mouyase  
    OP
       Aug 13, 2024
    @WhateverYouLike 是并行的
    sagaxu
        6
    sagaxu  
       Aug 13, 2024
    部分成功的时候,有 3 个问题

    1. 技术上是否可重启失败的任务
    2. 业务逻辑上是否应该重试,重试几次,间隔多久
    3. 确定失败之后如何展示错误

    1 是开发决定,2 和 3 是产品决定,所以你在纠结什么?
    mouyase
        7
    mouyase  
    OP
       Aug 13, 2024
    @sagaxu 你说的队,不是我该想的,不想了,统一都放 reslove 里了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3278 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 11:13 · PVG 19:13 · LAX 04:13 · JFK 07:13
    ♥ Do have faith in what you're doing.