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組,將其中的兩組進行比較,然後如果不相等,就將重的那組進行兩兩劃分,在比較,在將兩個重的進行比較在進行比較。如果相等則將餘下的那組進行比較。相信這裡有不少園友...