问题如标题,JSON对象显示为空,但console.log出来的数据点开却显示内部有值。 代码如下: 希望大家能给我一个指导,对这个问题是在是头疼不已!谢谢
劳请大神看下是怎么回事
是不是我写的太过简单粗暴连编译器都看不下去了 哈哈
你的请求发出去之后你就打印了结果集,但是此时请求还未返回,所以刚开始打印出来的结果集是空的,然后,你打开结果集时,请求的数据已经回来,所以展开就有喽。
我瞎猜的
@tjru promise将异步形式的代码写成了同步形式的代码 难道代码运行还是异步的吗?
你要用递归,用for写是错误的
@yahue 好的 我也是这样感觉 我重新修改代码吧
for 里面是异步的,console.log()是在then外面执行的,所以,下面的console先执行了. 建方看下JS 的异步操作,结合你的代码,简单写了几句:
这里没有递归, 都是Promise, 如果是递归的话,那还用什么ES6
@LeoChowChina 多谢楼主!问题已经解决了!本来我的想法也是promise.all,但是一直组织不出来方法!顺便多问一句,楼主是怎么学习的?我一直梦想做一个大神 但是水平一直没什么长进!
json: true 要设置成这样,要不然就是文本
@htoooth 好的 谢谢!
@yss1993 这个多写啊。我一天除了上班还写2个小时左右的代码。和读书百遍,其义自现是一样的,这只是我的拙见,我也很菜的,只是这里正好是我会的。另外,你的需要在getAllWeather return Promise.resolve吗?我觉得可以直接return promises.然后下面就直接Promise.all(promises).then,可以少包一层。
还可以包得更少:
在getAllWeather里直接return Promise.all(pormises) 这里注意一个拼写,我看你这样写的就这样写了。 然后呢,在下面就可以直接getAllWeather.then(resp=> {})
另外你一直问的楼主
@LeoChowChina 敲代码敲快了 拼写没注意到 嘿嘿!promise.all的iterator没法定义为对象,我还是选择用async.series,我需要把areaidArr内的值一块使用request返回回去,后面我还需要用到!谢谢你了哈!
@yss1993 没事儿
像你写的这种情况是不适合用async和await去写的,很容易搞成串行,效率极差,用promise.all是比较好的办法
@daileimail 您有什么高招吗?
@tjru 之所以用async是因为我要把areaidArr中的元素给带到下一步处理 但是promise.all仅支持数组 小弟才疏学浅 实在想不出有什么更好的办法了