generator非同步方案
async/await語法糖
let url1 =
'url1'
, url2 =
'url2';$.
ajax(}
)}})
function
getdata
(url, data)
, error:
function
(err)})
})}let url1 =
'url1'
, url2 =
'url2'
;getdata
(url1)
.then
(res =>).
then
( res=>).
catch
(err)
p.
then
(data =>
, err =>
)
let p =
newpromise
((resolve, reject)
=>
else},
2000);
}); p.
then
((data)
=>
,(err)
=>
);
p.
then
((data)
=>).
catch
((err)
=>
);
let promise1 =
newpromise
(function
(resolve, reject)
)let promise2 =
newpromise
(function
(resolve, reject)
)let promise3 =
newpromise
(function
(resolve, reject)
)let p = promise.
all(
[promise1, promise2, promise3])
p.then
(funciton()
,function()
)
//請求某個資源
function
requestimg()
img.src =
'的路徑';}
);return p;
}//延時函式,用於給請求計時
function
timeout()
,5000);
});return p;
} promise.
race([
requestimg()
,timeout()
]).then
((data)
=>).
catch
((err)
=>
);
let k =
tell()
; console.
log(k.
next()
);// console.
log(k.
next()
);// console.
log(k.
next()
);// console.
log(k.
next()
);//}
functiona(
))})
}functionb(
))}function
*grendome()
)}let gren =
grendome()
;// console.log(gren.next())
// // console.log(gren.next())
// // console.log(gren.next())
// // console.log(gren.next())
// gren.
next()
.value.
then
((res)
=>
)gren.
next()
.value.
then
((res)
=>
)gren.
next()
.value.
then
((res)
=>
)// 輸出結果
// a
// b
// grendome內部
function
sleep
(time)
, time);}
);}async
function
test()
}test
()
let
test
=function()
});return ret;}(
);// generator 自執行器
function
_asynctogenerator
(genfn)
;try
catch
(error)if
(info.done)
else
,(error)
=>);
}}step
('next');
});}
文章參考:
什麼是promise,我們用它來做什麼?
js為什麼說async/await是generator的語法糖詳解
generator和async/await
JS中的非同步程式設計方法
js語言的執行環境是 單執行緒 所謂單執行緒,就是乙個時間只能完成乙個任務,如果有多個任務,就必須排隊。單執行緒 的壞處是 只要有乙個任務耗時很長,後面的任務就必須排隊等待,會拖延整個程式的執行。為了解決這個問題,js的任務執行模式分為兩種 同步 synchronous 和非同步 asynchron...
JS非同步程式設計之Generator
前言 es6 中提出乙個叫生成器 generator 的概念,執行生成器函式,會返回迭代器物件 iterator 這個迭代器物件可以遍歷函式內部的每乙個狀態。function helloworldgenerator 通過執行生成器返回迭代器物件 var helloworlditerator hell...
JS 同步與非同步程式設計
js是單執行緒的,js就是個傻子,腦子一根筋,做著當前的這件事情,沒有完成之前絕不會做下一件事情 同步上一件事情沒有完成,繼續處理上一件事情,只有上一件事情完成了,才會做另一件事情 js中大部分都是同步程式設計的 for var i 0 i 10000 i console.log ok 迴圈結束了 ...