We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
指路:https://github.com/LinDaiDai/niubility-coding-js/blob/master/JavaScript/%E5%BC%82%E6%AD%A5/%E8%A6%81%E5%B0%B1%E6%9D%A545%E9%81%93Promise%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%80%E6%AC%A1%E7%88%BD%E5%88%B0%E5%BA%95.md hi你好呀谢谢你整理的题目~今天我把45题都做了一遍,然后发现一些不一样的地方,经我的查阅以及确认后,想来与你分享,所以提了个issue。我可能也不一定是对的,你可以和我一起讨论下。 **1.4:**这里我的答案是'promise1' '1' Promise{: 'resolve1'} '2' Promise{: undefined} 'resolve1' 其中promise2 不应该为pending态(浏览器确实是输出这个,但是那个对象展开后其实是fulfilled) then()内resolve回调在没有返回值时默认返回一个新的fulfilled态的Promise,这是链式调用的根本。 2.3这里无关答案就是突然发现有两个2.3的序号哈哈哈 3.10.finally()方法不管Promise对象最后的状态如何都会执行 这里应该严谨些 pengding状态是不会执行finally的 4.1 r(x, console.log(x)这个写法 虽然确实是运行了 console.log 我也查阅了资料,想查出resolve函数是否能接受多个参数,但没有查到具体文档,但是我试过resolve(1,console.log(1),console.log(2),console.log(3),console.log(4))后面的参数无论多少都可以被执行, 以上图片是ecma文档的描述 所以我认为 这样书写并不规范,容易造成误解。感觉这样写更好些: const p = new Promise(r => setTimeout(() => {r(x); console.log(x)}, 1000)) 后面还有一些例题也是这样子的 5.1// 转换后代码 new Promise(resolve => { console.log("async2") resolve() }).then(res => console.log("async1 end")) 这里有误, 现在await的语义应该是 Promise.resolve() 具体可以看https://www.zhihu.com/question/268007969中的解释 这里涉及一个优化 ,Promise.resolve(p),这个p若是一个Promise 则会原封不动返回这个p,但若是new Promise()则会创建一个新的Promise **5.5和5.6 5.7....**的代码中script写误了,r和c写反了,问题不大 (全局搜索一下好了 后来我发现好像代码里的很多处script都写错了就不列举了) 5.8 (这道题最后async1 end和promise2的顺序其实在网上饱受争议,我这里使用浏览器Chrome V80,Node v12.16.1的执行结果都是上面这个答案). 这个差异的原因其实就是我前面提到的那个 await 的语义的问题 https://www.zhihu.com/question/268007969 不同版本输出不同 是因为tc39更改await的语义标准导致的 其实最开始就是跟现在一样的 ,但中间tc39改了一个版本 最后又在某次改回来了(也就是现在这个标准)是出于性能的原因又优化回来了吧,现在的版本 await 只需要一次microtick 而之前的版本至少需要三个microtick 可以刚才这个链接中的 这个老男孩的回答。
r(x, console.log(x)
5.9 里面的something 都少了字母h 7.3 resolve('resovle1'); 的resolve 写错了 v 和l写反 但是答案中没写错 8.5 8.6 最后末尾少了一个大括号}
The text was updated successfully, but these errors were encountered:
No branches or pull requests
指路:https://github.com/LinDaiDai/niubility-coding-js/blob/master/JavaScript/%E5%BC%82%E6%AD%A5/%E8%A6%81%E5%B0%B1%E6%9D%A545%E9%81%93Promise%E9%9D%A2%E8%AF%95%E9%A2%98%E4%B8%80%E6%AC%A1%E7%88%BD%E5%88%B0%E5%BA%95.md
hi你好呀谢谢你整理的题目~今天我把45题都做了一遍,然后发现一些不一样的地方,经我的查阅以及确认后,想来与你分享,所以提了个issue。我可能也不一定是对的,你可以和我一起讨论下。
**1.4:**这里我的答案是'promise1'
'1' Promise{: 'resolve1'}
'2' Promise{: undefined}
'resolve1'
其中promise2 不应该为pending态(浏览器确实是输出这个,但是那个对象展开后其实是fulfilled)
then()内resolve回调在没有返回值时默认返回一个新的fulfilled态的Promise,这是链式调用的根本。
2.3这里无关答案就是突然发现有两个2.3的序号哈哈哈
3.10.finally()方法不管Promise对象最后的状态如何都会执行 这里应该严谨些 pengding状态是不会执行finally的
4.1
r(x, console.log(x)
这个写法 虽然确实是运行了 console.log 我也查阅了资料,想查出resolve函数是否能接受多个参数,但没有查到具体文档,但是我试过resolve(1,console.log(1),console.log(2),console.log(3),console.log(4))后面的参数无论多少都可以被执行,以上图片是ecma文档的描述 所以我认为 这样书写并不规范,容易造成误解。感觉这样写更好些:
const p = new Promise(r => setTimeout(() => {r(x); console.log(x)}, 1000)) 后面还有一些例题也是这样子的
5.1// 转换后代码
new Promise(resolve => {
console.log("async2")
resolve()
}).then(res => console.log("async1 end"))
这里有误, 现在await的语义应该是 Promise.resolve() 具体可以看https://www.zhihu.com/question/268007969中的解释
这里涉及一个优化 ,Promise.resolve(p),这个p若是一个Promise 则会原封不动返回这个p,但若是new Promise()则会创建一个新的Promise
**5.5和5.6 5.7....**的代码中script写误了,r和c写反了,问题不大 (全局搜索一下好了 后来我发现好像代码里的很多处script都写错了就不列举了)
5.8 (这道题最后async1 end和promise2的顺序其实在网上饱受争议,我这里使用浏览器Chrome V80,Node v12.16.1的执行结果都是上面这个答案). 这个差异的原因其实就是我前面提到的那个 await 的语义的问题 https://www.zhihu.com/question/268007969 不同版本输出不同 是因为tc39更改await的语义标准导致的 其实最开始就是跟现在一样的 ,但中间tc39改了一个版本 最后又在某次改回来了(也就是现在这个标准)是出于性能的原因又优化回来了吧,现在的版本 await 只需要一次microtick 而之前的版本至少需要三个microtick 可以刚才这个链接中的
这个老男孩的回答。
5.9 里面的something 都少了字母h
7.3 resolve('resovle1'); 的resolve 写错了 v 和l写反 但是答案中没写错
8.5 8.6 最后末尾少了一个大括号}
The text was updated successfully, but these errors were encountered: