同步 while 循环 javascript
synchronous while loop javascript
我想要这个输出 1,1,1,....
而不是 2,1
我想运行同步
//just wait 2 seconds
function s(callback){
setTimeout(() => {
callback()
}, 2000);
}
a=[2]
while (a.length!==0){
a.shift()
s(()=>{
a.push(2)
console.log('1');
})
}
console.log('2');
您可以使用当前代码实现此目的的一种方法是使用 async/await
和 Promises。
//just wait 2 seconds
function s(callback) {
return new Promise(resolve => {
setTimeout(() => {
callback()
resolve()
}, 2000);
})
}
const main = async function() {
const a = [2];
while (a.length !== 0) {
a.shift()
// This "waits" for s to complete. And s returns a Promise which completes after 2 secs
await s(() => {
a.push(2)
console.log('1');
})
}
console.log('2');
}
main()
如果你真的只需要一个无限循环while(true) { /* ... */ }
就足够了。
我想要这个输出 1,1,1,....
而不是 2,1
我想运行同步
//just wait 2 seconds
function s(callback){
setTimeout(() => {
callback()
}, 2000);
}
a=[2]
while (a.length!==0){
a.shift()
s(()=>{
a.push(2)
console.log('1');
})
}
console.log('2');
您可以使用当前代码实现此目的的一种方法是使用 async/await
和 Promises。
//just wait 2 seconds
function s(callback) {
return new Promise(resolve => {
setTimeout(() => {
callback()
resolve()
}, 2000);
})
}
const main = async function() {
const a = [2];
while (a.length !== 0) {
a.shift()
// This "waits" for s to complete. And s returns a Promise which completes after 2 secs
await s(() => {
a.push(2)
console.log('1');
})
}
console.log('2');
}
main()
如果你真的只需要一个无限循环while(true) { /* ... */ }
就足够了。