HOU AILING

Results 40 comments of HOU AILING

上面实现Promise.all的函数中在onRejected回调函数里写的return真的有用吗?并不能阻止其他promise继续执行吧?这个return相当于return undefined给一下一个.then的onFullfilled回调了

> 深拷贝那里不能用 `for...in` 会把原型链上的属性也拷贝进来的,用 `Object.keys` 我觉得拷贝上也没什么问题?如果使用Object.keys会增加算法使用的空间.

作者,我还想问一个问题。关于Promise的缺点,我们应该如何捕捉异常呢,如果在最后一个.catch中也发生异常我们怎么办,没有东西可以捕获这个异常了?直接等待浏览器自动进行垃圾回收吗?

``` Promise.prototype.finally = function (callback) { return this.then((value) => { return Promise.resolve(callback()).then(() => { return value; }); }, (err) => { return Promise.resolve(callback()).then(() => { throw err; }); }); }...

> > ``` > > Promise.prototype.finally = function (callback) { > > return this.then((value) => { > > return Promise.resolve(callback()).then(() => { > > return value; > > }); >...

> > 作者,我还想问一个问题。关于Promise的缺点,我们应该如何捕捉异常呢,如果在最后一个.catch中也发生异常我们怎么办,没有东西可以捕获这个异常了?直接等待浏览器自动进行垃圾回收吗? > > 通常情况下,我们不会在最后一个catch中做一些操作,一般只会打印错误日志。 > 如果最后一个catch发生异常,的确没法捕获~ > 异步不能被try catch,这也是async await 的好处之一~ 感谢作者的回答

题目里面new的实现貌似不能给fn传参数,如果调用fn返回的结果是null也会被忽略的 ```js function _new(fn){ return function(){ let target = Object.create(fn.prototype); let ans = fn.apply(target, arguments); let ansType = typeof ans; if((ansType === 'object' && ans !== null) || ansType ===...

对象深拷贝里面下面两行代码是不是可以不需要呢,因为后面var obj = new obj.constructor()以及后面的拷贝操作可以涵盖 ```js if(obj instanceof RegExp) return new RegExp(obj); if(obj instanceof Date) return new Date(obj); ```

关于用es5实现继承下面这句代码 是不是应该换成SubType.prototype = Object.create(SuperType.prototype)呢,如果采用下面的方式会在原型对象上加上colorts和name两个属性,而这两个属性不应该出现在原型对象上(当然根据业务需求来决定),虽然在在SubType这个构造器里面使用了SuperType.call(this, arguments)来给实例对象创建这两个属性会覆盖原型对象上的这两个属性。但是始终觉得原型对象上的这两个属性是杂物,应该去掉。另外,SuperType构造器里面忘记声明name这个形参了。😝 ```js SubType.prototype = new SuperType(); ```

Promise.all的实现里面那个setTimeout貌似没什么用?好像并不需要这个setTimeout.