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

4 評論 9843 瀏覽 50 收藏 10 分鐘

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

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

一、問題示例

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

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

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

整店導(dǎo)入商品

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

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

一個有三行文字的提示框?

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

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

整店導(dǎo)入

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

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

二、開始思考

接下來開始思考究竟怎么樣才能讓這個功能變好用,“好用”可以具體分為以下幾點:

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

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

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

選擇平臺

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

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

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

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

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

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

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

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

一個帶有快捷入口的提示

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

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

氣泡框的輕度提示

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

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

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

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

一個彈出通知

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

三、總結(jié)

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

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

 

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

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

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

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

    來自陜西 回復(fù)
  3. 不錯的反饋方案

    來自廣東 回復(fù)
  4. 說的很好

    來自上海 回復(fù)