刚学习Promise。Javascript是单线程的对吧?那么使用fetch API进行http请求时,这一切都发生在一个线程中吗?
那PromisePool如何管理并发呢?
var p = Promise(...)
p.then(
...//stuff1
)
p.then(
//stuff2
)
那么这两个函数不能在多个线程上运行,对吧?只能在一个线程中运行吗?
刚学习Promise。Javascript是单线程的对吧?那么使用fetch API进行http请求时,这一切都发生在一个线程中吗?
那PromisePool如何管理并发呢?
var p = Promise(...)
p.then(
...//stuff1
)
p.then(
//stuff2
)
那么这两个函数不能在多个线程上运行,对吧?只能在一个线程中运行吗?
(async function first() {
await undefined;
console.log(2);
await undefined;
console.log(4);
})();
(async function second() {
console.log(1);
await undefined;
console.log(3);
})();
JavaScript确实具有某种形式的并发性,但仅限于函数级别(或异步函数中的块),而不是单个指令级别。
要实现真正的并行执行,您需要使用多个代理(WebWorkers、ServiceWorkers),它们也可以以有限的方式共享内存。
then
回调将会同步依次执行。 - Bergi