私は、非同期の概念とjsの約束の周りに私の頭を包み込むのに苦労しています。私は以下のコードが私のコンソールに何も印刷しない理由を理解できません。Javascript PromiseとAsync code
私のPromiseのコードは非同期ではありませんが、約束のポイントではないので、私はそれを前提としています。同期するものを非同期にするには?
そうでない場合、js関数(setTimeOutなど)を組み込むことなく、同期コードを非同期に「変換」するにはどうすればよいですか?
function countdown(seconds) {
return new Promise(function(resolve, reject) {
for (let i = seconds; i >= 0; i--) {
if (i > 0) console.log(i + '...');
else resolve(console.log("GO!"));
}
}
};
count = countdown(5).then(() => console.log('Completed'), (err) => console.log(err.message));
"約束のポイントではありません:同期を非同期にする* *"いいえ、絶対にありません。 [約束のポイント](http://stackoverflow.com/a/22562045/1048572)は、すでに非同期のものを返すことができる値として扱うことで、それらを扱うことです。あなたの例では、同期ループがあり、ここに約束を使用する理由はありません。 – Bergi
'以下のコードが私のコンソールに何も印刷しないのはなぜですか? '紛失したことについてのエラーでもない ')'?より良いブラウザを使用してください –
その性質上、javascriptは同期です(抗議の鳴き声を待つ)...非同期である任意の(ネイティブではない)関数は、その関数に直接起因するか、間接的に "ネイティブ"関数つまり、非同期である - したがって、あるコードを同期から非同期に変換する*唯一の方法は、本質的には非同期である多くの "ネイティブ"関数の1つを使用することです(直接、または間接的に、これらの非同期関数のうちの1つを直接呼び出します) –