console.log('start'); setTimeout(function() { console.log('timeout'); }, 0); Promise.resolve().then(function() { console.log('promisel'); }).then(function() { console.log('promise2'); }).then(() => console.log(`promise3`)) async function asyncFunc() { await asyncSubFunc(); Promise.resolve().then(x => { console.log('async end'); }) } async function asyncSubFunc() { console.log('async sub'); return Promise.resolve().then(() => { console.log('async sub promise'); }); } asyncFunc(); console.log('end'); 理想的预期输出: start async sub end promisel async sub promise async end promise2 promise3 timeout 实际浏览器控制台输出为: start async sub end promisel async sub promise promise2 promise3 async end timeout 问题1:await后的代码被执行完成后,为什么没有继续往下,而是继续执行微任务队列中的微任务? 问题2:await后(下一行)的代码会被放在微任务队列中执行,具体的执行时机是?
下面这段代码中,为何 "ws.send_text("1")" 必须等待 "load_dataset("beans")" 加载完毕才会执行呢? 不应该是先执行 "ws.send_text("1")" 然后再执行 "load_dataset("beans")" 吗? «"load_dataset" 是一个"加载模型数据集的函数" (https://link.segmentfault.com/?enc=IpPF%2BLKiiEr5rz%2FYvfK%2FjA%3D%3D.EUwwjxnJR32yszl%2B7tXqe005fCuVAqNo99SBQ19gFuL6PwMduHeQ7gp49cX8FTjQ1fvstZA8abBmJvDwV3xn%2BvbQqcIxGRQH9Dq7%2F0H73IwS0zHoRwd%2FItm8a2XvLc7g)。» from fastapi import FastAPI, WebSocket from datasets import load_dataset app = FastAPI() @app.websocket("/") async def h(ws: WebSocket): await ws.accept() await ws.send_text("1") dataset = load_dataset("beans") await ws.send_text("2")