1/** 2 * @file 假设加法是一个异步过程,如何计算多个数组之和? 3 */ 4function sleep(ms: number) { 5 return new Promise(r => { 6 setTimeout(() => { 7 r(undefined) 8 }, ms); 9 }) 10} 11 12async function asyncAdd(a: number, b: number) { 13 await sleep(1000); 14 return a + b; 15} 16 17function sum(arr: number[]): Promise<number> { 18 // 补全这里代码,涉及 arr 中两数求和只能使用 asyncAdd,禁止使用加号 19 throw new Error('功能待实现'); 20} 21 22console.time('a') 23sum([1, 2, 3, 4, 5, 6, 7, 8]) 24 .then(v => { 25 console.log(v) // 36 26 console.timeEnd('a') // a: <耗时> 27 }) 28 29export default {}
参考答案:
1/** 2 * @file 假设加法是一个异步过程,如何计算多个数组之和? 3 */ 4function sleep(ms: number) { 5 return new Promise((r) => { 6 setTimeout(() => { 7 r(undefined); 8 }, ms); 9 }); 10} 11 12async function asyncAdd(a: number, b: number) { 13 await sleep(1000); 14 return a + b; 15} 16 17async function sum(arr: number[]): Promise<number> { 18 // 参考答案 19 var s: number = arr[0]; 20 for (var i = 1; i < arr.length; i++) { 21 s = await asyncAdd(s, arr[i]); 22 } 23 return s; 24} 25 26console.time("a"); 27sum([1, 2, 3, 4, 5, 6, 7, 8]).then((v) => { 28 console.log(v); // 36 29 console.timeEnd("a"); // a: <耗时> 30}); 31 32export default {}; 33
最近更新时间:2024-08-10