面试的时候遇到的一道题。原生fetch api不支持timeout,需要放fetch支持timeout。
一开始的想法是直接把fetch包一层,返回一个新的promise,这个promise受一个setTimeout的reject控制:
1 | const myFetch = function(url, options, timeout) { |
但是感觉面试官对这个答案不是很满意,想了下再写了一版:
1 | const timeoutFetch = function(url, args, timeout) { |
持续改进:
1 | //通过高阶函数,保持了fetch的参数列表不变,对业务代码的侵入性更低 |
原先一直觉得Promise.race
在工作中用得比较少(平时Promise.all
用得比较多),没啥用。。看了这个后真的只能真香“女少啊” :)