關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

4 評(píng)論 9727 瀏覽 50 收藏 10 分鐘

編輯導(dǎo)語(yǔ):在上一篇文章《關(guān)于異步任務(wù)的設(shè)計(jì)探索(1)》中,作者為我們解答了異步任務(wù)的設(shè)計(jì)邏輯是什么?有哪些需要注意的問(wèn)題?在本篇文章中,作者又繼續(xù)異步任務(wù)設(shè)計(jì)的故事,從代碼層面上分享了關(guān)于異步任務(wù)的設(shè)計(jì)探索。

終于有時(shí)間歸納一下另外一個(gè)系統(tǒng)的問(wèn)題了,之前想說(shuō)的只是一個(gè)業(yè)務(wù)上的異步(關(guān)于異步任務(wù)的設(shè)計(jì)探索(1)),今天寫(xiě)的是真真正正的異步任務(wù),是代碼層面上的異步并非業(yè)務(wù)所要求的異步。

一、問(wèn)題示例

這次的例子來(lái)源于我們做“商品導(dǎo)入”這個(gè)功能,先看看我們之前的做法:

  • 用戶(hù)可以選擇導(dǎo)入某個(gè)平臺(tái)的商品到我們的后臺(tái)中,但是若想再導(dǎo)入需要等當(dāng)前的導(dǎo)入任務(wù)全部結(jié)束才能進(jìn)行第二次導(dǎo)入,而且還對(duì)商品進(jìn)行了緩存,導(dǎo)致用戶(hù)在淘寶更新了商品后,需要相隔12個(gè)小時(shí)才能再次導(dǎo)入更新了的商品到我們平臺(tái);

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

整店導(dǎo)入商品

  • 在實(shí)踐過(guò)程中,我們發(fā)現(xiàn)很多人停留在此頁(yè)面,怕關(guān)掉此頁(yè)面,導(dǎo)入任務(wù)會(huì)中斷(雖然他關(guān)掉此頁(yè)面,后臺(tái)仍會(huì)繼續(xù)導(dǎo)入);為了處理這個(gè)問(wèn)題,我們簡(jiǎn)單粗暴地加了一個(gè)提示框:

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

一個(gè)有三行文字的提示框?

  • 我們默認(rèn)會(huì)將用戶(hù)的整個(gè)店鋪的商品導(dǎo)進(jìn)來(lái),用戶(hù)不能選擇導(dǎo)什么商品,這就導(dǎo)致后來(lái)的兩個(gè)問(wèn)題:很難以導(dǎo)入次數(shù)去計(jì)費(fèi)、消耗大量的服務(wù)器資源與成本;并且大多數(shù)用戶(hù)因?yàn)閷?dǎo)入時(shí)間等待過(guò)長(zhǎng)而流失掉。

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

整店導(dǎo)入

總結(jié)一下以上問(wèn)題:

  • 導(dǎo)入任務(wù)不能多個(gè)開(kāi)啟,用戶(hù)需要等待任務(wù)完成后才能再導(dǎo)入其他商品;
  • 提示過(guò)長(zhǎng),并且沒(méi)有能讓用戶(hù)知道導(dǎo)入進(jìn)度的地方;
  • 用戶(hù)無(wú)法選擇導(dǎo)入的商品,導(dǎo)致每次導(dǎo)入都消耗了大量的服務(wù)器資源和成本(有些店鋪的商品達(dá)到3000件)。

二、開(kāi)始思考

接下來(lái)開(kāi)始思考究竟怎么樣才能讓這個(gè)功能變好用,“好用”可以具體分為以下幾點(diǎn):

  • 用戶(hù)控制:清晰知道進(jìn)度,監(jiān)控每個(gè)商品的導(dǎo)入情況,中斷任務(wù)的權(quán)力甚至是中斷某個(gè)商品導(dǎo)入的權(quán)力;
  • 前饋指引:告訴用戶(hù)這個(gè)功能是什么,可以做什么,功能有什么條件限制等等;
  • 反饋提醒:執(zhí)行導(dǎo)入任務(wù)后,讓用戶(hù)有安全感地關(guān)閉當(dāng)前頁(yè)面,具體為讓用戶(hù)知道他可以隨時(shí)隨地回來(lái)查看這個(gè)任務(wù),這個(gè)任務(wù)完成時(shí)會(huì)立即通知到用戶(hù)。

于是第一點(diǎn):讓用戶(hù)能夠選擇導(dǎo)入什么商品(當(dāng)然這個(gè)需要接口支持),用戶(hù)用鏈接采集時(shí)并非立即執(zhí)行導(dǎo)入任務(wù),而是先采集好店鋪的所有商品(未開(kāi)始采集商品詳情),讓用戶(hù)去選擇需要導(dǎo)入的商品,當(dāng)然也需要給出方便的交互讓用戶(hù)可以一鍵選擇全部商品來(lái)進(jìn)行導(dǎo)入(或者用戶(hù)第一次導(dǎo)入時(shí),不需要選擇直接導(dǎo)入整店的商品)。

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

選擇平臺(tái)

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

采集店鋪商品后,可以選擇導(dǎo)入什么商品

執(zhí)行導(dǎo)入后,并不在當(dāng)前頁(yè)顯示導(dǎo)入的狀態(tài)或結(jié)果,引入另一個(gè)頁(yè)面來(lái)放置任務(wù),所以引入了另一個(gè)專(zhuān)門(mén)放置導(dǎo)入任務(wù)的頁(yè)面。

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

一個(gè)專(zhuān)門(mén)放置任務(wù)的頁(yè)面,詳情可以查看每個(gè)任務(wù)里商品導(dǎo)入的情況

但這樣會(huì)引入一個(gè)新的問(wèn)題,由于導(dǎo)入的頁(yè)面與任務(wù)的頁(yè)面是割裂的,為了不打破用戶(hù)的“心流”,我們需要在用戶(hù)導(dǎo)入完畢后自然引導(dǎo)用戶(hù)進(jìn)入任務(wù)查看,即“反饋提示”。

如下圖:導(dǎo)入后告訴用戶(hù)已經(jīng)開(kāi)始,并提供快捷入口讓用戶(hù)進(jìn)入查看。

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

一個(gè)帶有快捷入口的提示

當(dāng)用戶(hù)點(diǎn)擊取消時(shí),利用氣泡框輕度提示用戶(hù)可以從此入口查看任務(wù):

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

氣泡框的輕度提示

因?yàn)橛脩?hù)已經(jīng)點(diǎn)了【取消】,說(shuō)明用戶(hù):有其他流程需要處理;已經(jīng)非常熟悉導(dǎo)入流程,不需要查看。所以此時(shí)為了不打擾用戶(hù),做一個(gè)輕度提示即可(甚至可以只在用戶(hù)第一次導(dǎo)入時(shí)提示)。

導(dǎo)入完畢后,需要及時(shí)提醒用戶(hù)導(dǎo)入任務(wù)已完成,這里有幾種方法,由于用戶(hù)不一定時(shí)刻在電腦前,所以可以取其中之一或全部用上。

  • 短信:若用戶(hù)注冊(cè)時(shí)需要提供手機(jī)號(hào),這是開(kāi)發(fā)成本最低的一種做法,也是最快速,缺點(diǎn)是金錢(qián)成本會(huì)比較高;
  • 公眾號(hào):若用戶(hù)使用微信登錄,并且關(guān)注公眾號(hào),可以調(diào)用公眾號(hào)-消息模版能力,優(yōu)點(diǎn)是0金錢(qián)成本,還能順便提高公眾號(hào)的粉絲,缺點(diǎn)是需要開(kāi)發(fā),并且消息模版只能使用微信的;
  • 網(wǎng)頁(yè)端直接彈出提示:優(yōu)點(diǎn)是自己可以控制文案和樣式,并且能夠直接跳轉(zhuǎn)查看對(duì)應(yīng)的任務(wù),缺點(diǎn)是需要開(kāi)發(fā)通訊類(lèi)功能(socks之類(lèi)),用戶(hù)離開(kāi)后就收不到消息。

關(guān)于異步任務(wù)的設(shè)計(jì)探索(2)

一個(gè)彈出通知

所以要與開(kāi)發(fā)團(tuán)隊(duì)權(quán)衡好利弊,進(jìn)行取舍。

三、總結(jié)

當(dāng)初將異步的任務(wù)也設(shè)計(jì)成同步的交互,后來(lái)發(fā)現(xiàn)一團(tuán)糟;經(jīng)過(guò)幾次與團(tuán)隊(duì)的探討,看別人的文章與設(shè)計(jì)后,總結(jié)出幾點(diǎn):

  1. 碰到異步的任務(wù)時(shí),最好能在代碼層面了解它是怎么運(yùn)作的,包括但不限于調(diào)用了什么接口、接口調(diào)用的時(shí)長(zhǎng)(這個(gè)決定了是否要同步處理還是異步處理)、接口返回的錯(cuò)誤、任務(wù)是按照隊(duì)列去執(zhí)行還是能夠并發(fā)執(zhí)行;業(yè)務(wù)層面了解它需要的角色、流程、流程的時(shí)長(zhǎng)、流程涉及到的場(chǎng)景。
  2. 不要企圖僅用文案去解決用戶(hù)的不安以及等待,這個(gè)是我們犯過(guò)最大的錯(cuò);以為提示可以解決一切;但用戶(hù)會(huì)跟著流程走,流程設(shè)計(jì)出錯(cuò)的時(shí)候,用戶(hù)會(huì)非常無(wú)助地停留在原地。
  3. 多與開(kāi)發(fā)溝通,很多時(shí)候,設(shè)計(jì)貌似只是產(chǎn)品或UI的事情,開(kāi)發(fā)只是執(zhí)行,但在我執(zhí)行過(guò)的項(xiàng)目中,好的項(xiàng)目往往是開(kāi)發(fā)一同參與設(shè)計(jì)部分的(并不是說(shuō)執(zhí)行,而是給出建議),因?yàn)橛行┓桨甘切枰_(kāi)發(fā)人員的知識(shí)才能想到(具體可以參考“增長(zhǎng)黑客”一書(shū)中的案例)。

 

本文由 @蔡包 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自?Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 關(guān)于導(dǎo)入進(jìn)度有個(gè)疑問(wèn):前端如何知道后端什么時(shí)候可以導(dǎo)入完成,從而顯示進(jìn)度呢?

    來(lái)自湖北 回復(fù)
  2. 有用!

    來(lái)自陜西 回復(fù)
  3. 不錯(cuò)的反饋方案

    來(lái)自廣東 回復(fù)
  4. 說(shuō)的很好

    來(lái)自上海 回復(fù)