技术解析

Javascript 代码执行先后顺序问题
0
2021-08-16 22:02:35
idczone

hello 大家好,

我之前一直用 python 写一些小工具,最近开始用 JS 写东西,发现各种不适应:要么忘记放 ; , 要么数不清 {} 是否成对。 这些都还好,多写一写也就习惯了,现在碰到一个代码执行顺序的逻辑问题:我有一个组订单号码,每个订单号码都要拿去进行 GET 请求,请求结果有一个变量要么 true 要么 false,我需要将根据这个变量将原始的订单号码分两组。

假设订单号码列表为:ordersID = [11, 12, 13, 21]

如果是 python,我可以这样写:

ordersID = [11, 12, 13, 21];
successful = list();
fail = list();
for x in ordersID:
  if (...):
    successful.append(x)
  else:
    fail.append(x)
print(successful, fail) # [11,12, 13] [21]

为了精简我把条件部分省掉了

Javascript 我是这样写的:




    
    
    Document


    

Testing!

我期望的结果是返回一个successful array 和一个 fail array,分别包含成功和失败的订单号码。可结果是返回空的 array 。我 JS 还没有好好学,只是边做边查,哪位盘友指点一下 :)


(你要不先研究下 Python3 的 asyncio,等研究完回来再看,可能就知道问题所在了 :-)

Promise.all 或 Promise.allSettled

用 async await

fetch(`https://jsonplaceholder.typicode.com/posts/${arg}`, {method: 'GET'})
->
return fetch(`https://jsonplaceholder.typicode.com/posts/${arg}`, { method: 'GET' })
for (i = 0; i < ordersID.length; i++) {makeRequest(ordersID[i]); console.log(successful, fail)};
->
for (i = 0; i < ordersID.length; i++) {
  makeRequest(ordersID[i]).then(() => {
   console.log(successful, fail);
 });
};

相关知识点
Promise
event loop
macrotask 和 microtask

哇!你们太给力,给你们点赞
数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服