一道有趣的非同步題

2022-01-31 12:17:06 字數 1310 閱讀 4934

const delay = (ms) => new promise((resolve) => settimeout(resolve, ms));

const subflow = createflow([() => delay(1000).then(() => log("c"))]);

createflow([

() => log("a"),

() => log("b"),

subflow,

[() => delay(1000).then(() => log("d")), () => log("e")],

]).run(() => );

// 需要按照 a,b,延遲1秒,c,延遲1秒,d,e, done 的順序列印

按照上面的測試用例,實現 createflow:
flow 是指一系列 effects 組成的邏輯片段。

flow 支援巢狀。

effects 的執行只需要支援序列。

原文解法:

function createflow(effects = )

} else if (task?.isflow)

}callback?.();

}return ;

}如果對巢狀思路有點不明白,可以換種思路

function createflow(effects = )

while (sources.length > 0) else if (typeof task === "function") );

break;}}

}}

return ;

}

測試用例
const delay = (ms) => new promise((resolve) => settimeout(resolve, ms));

const subflow = createflow([() => delay(2000).then(() => console.log("c"))]);

createflow([

() => console.log("a"),

() => console.log("b"),

subflow,

[() => delay(1000).then(() => console.log("d")),

() => delay(1000).then(() => console.log("e")),

() => delay(2000).then(() => console.log("f")),

],]).run(() => );

一道有趣的演算法題

日前在網上看到一道演算法題。頗有意思,也細細的研究一番。現將該題發布於此,和各位交流一下。同時,本文也是筆者首次使用office2007的部落格功能,看看效果怎麼樣。某幢大樓有100層。你手裡有兩顆一模一樣的玻璃珠。當你拿著玻璃珠在某一層往下扔的時候,一定會有兩個結果,玻璃珠碎了或者沒碎。這幢大樓有...

一道有趣的構造題

題意 以下是三道證明題,均在平面上進行討論。以下 x0 y0 x1 y1 x 0,y 0 x 1,y 1 x0 y 0 x1 y1 表示一條從 x0 y0 x 0,y 0 x0 y 0 到 x1 y1 x 1,y 1 x1 y 1 的直線。其中,一條直線與乙個點集合相交表示這條直線上存在乙個點,這個...

一道有趣的智力題

題目 有12個外觀完全一樣的球,其中有乙個球和其他球的重量不一致,如何使用乙個天平稱3次得出不一致的球是哪個?筆者看到這題就立馬想到將球分成3組,將其中的兩組進行比較,然後如果不相等,就將重的那組進行兩兩劃分,在比較,在將兩個重的進行比較在進行比較。如果相等則將餘下的那組進行比較。相信這裡有不少園友...