有没有sleep比使用以下pausecomp函数更好的方法来设计JavaScript (从这里开始)?
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
Run Code Online (Sandbox Code Playgroud)
这不是JavaScript中Sleep的重复- 动作之间的延迟 ; 我希望在函数中间实现真正的睡眠,而不是在执行代码之前的延迟.
对于项目,开发人员向我们发送了一个.js文件,其代码类似于:
var myList = [1,2,3];
var a,b,c;
[a,b,c] = myList;
Run Code Online (Sandbox Code Playgroud)
它适用于Opera 10.30,Firefox 3.6.x,但对Opera 10.60和Chrome来说并不适用.
这只是好奇心,您是否有任何参考或链接表明此代码符合JS/ECMA标准?
你怎么看?
如果我在一些 javascript 代码中放入 VSCode 调试器并使用 wait 调用异步函数,它只会返回一个承诺。如何解决调试器中的承诺,以便我可以看到结果是什么?
例如,如果我定义一个像这样的函数:
const doAsyncThing = async () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(5)
}, 1000)
})
}
Run Code Online (Sandbox Code Playgroud)
然后当我在调试器中调用它时会发生这种情况:
> const result = await doAsyncThing()
Promise {<pending>}
> result
Uncaught ReferenceError: result is not defined
> doAsyncThing().then(r => console.log(r))
Promise {<pending>}
> await doAsyncThing().then(r => console.log(r))
Promise {<pending>}
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它解决承诺并在调试器中得到结果?
这不是How to debug async/await in Visual Studio Code?的重复项
这个问题似乎是在问如何在异步函数中放置断点,而我试图从调试器实际执行该函数。
我在此处的新帖子中重新创建了这个问题,因为我不认为它与上述帖子重复。这是我第一次发帖,所以希望这是正确的做法。
我知道这setTimeout是一个异步运行的 API,我想同步运行它。使用async/await如下所示应该bla bla首先打印,但我bla先打印。
async function testing(){
console.log("testing function has been triggered");
await setTimeout(function () {
console.log("bla bla")
}, 4200)
console.log("bla");
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JavaScript中的async/await编写递归函数.这是我的代码:
async function recursion(value) {
return new Promise((fulfil, reject) => {
setTimeout(()=> {
if(value == 1) {
fulfil(1)
} else {
let rec_value = await recursion(value-1)
fulfil(value + rec_value)
}
}, 1000)
})
}
console.log(await recursion(3))
Run Code Online (Sandbox Code Playgroud)
但我有语法错误:
let rec_value = await recursion(value-1)
^^^^^^^^^
SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud) 我有需要一些调用异步函数的无限循环的 nodejs 应用程序。我正在考虑实施以下内容:
async function execute1() {
...do some async work...
}
async function execute2() {
...do some async work...
}
setInterval(execute1, 500)
setInterval(execute2, 500)
Run Code Online (Sandbox Code Playgroud)
我担心的是,如果异步函数需要很长时间才能完成,打开的引用会堆积起来,这可能会导致内存崩溃。
为什么我们需要将函数传递给Javascript setTimeOut https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout
为什么我们不能像简单的那样做
setTimeOut(1000);
Run Code Online (Sandbox Code Playgroud)
我可以在那里传递空或无功能吗?
我想在每次迭代后等待for循环.
我有以下代码。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function sleep( lf_ms ) {
return new Promise( resolve => setTimeout( resolve, lf_ms ) );
}
async function check_form() {
alert( 'Test 1' );
await sleep( 1000 );
alert( 'Test 2' );
return false;
}
</script>
</head>
<body>
<form name="myform" method="post" action="test.htm" onsubmit="return check_form();">
<input type="text" name="city"><br>
<br>
<a href="javascript:check_form();">check the method call via link</a><br>
<br>
<button type="submit">check the method call via submit button</button><br>
<br>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想让函数 check_form() 休眠 1 秒钟。 …
如何让我的代码按顺序运行?例如,
如果我有一个for循环从服务获取一些数据,我希望n+1迭代只在nth迭代完成后运行.
我希望循环之后的代码只有在for循环完成所有交互之后才能执行.
示例代码:
someMethod() {
for ( var i = 0; i < someLength; i++) {
// get some data
this.dataService.get(i).subscribe(data => {
// do something with the data
});
}
//
console.log ('print me only after all iterations');
// ....
// some more lines of code
}
Run Code Online (Sandbox Code Playgroud)
这是另一个例子(Plunker):
someMethod() {
for ( var i = 0; i < 5; i++) {
setTimeout(()=> {
console.log('This is iteration' + i);
},500);
}
// I …Run Code Online (Sandbox Code Playgroud) 我正在试验 Promise.all,但是当我首先将它们推入数组时,这些函数就会运行,那么 promise.all 的意义何在?下面是一个例子:
async function foo(args) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(args)
resolve(args)
}, 500)
});
}
function init() {
var params = [10, 20, 30];
var promises = [];
for (let x of params) {
promises.push(foo(x));
}
//do something with Promise.all(promises) here
return;
}
init();
Run Code Online (Sandbox Code Playgroud)
输出:
10
20
30
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我敢肯定这是愚蠢的事情,我可能会失明。
编辑: 抱歉,我应该澄清一下,我知道如何实际调用 Promise.all,但我的印象是,在您调用之后才会运行承诺。
我想我要问的是是否有一种方法可以“查询”这些函数,以便在我运行 Promise.all() 之前它们不会立即运行?
编辑2:
我看到这被标记为重复/人们说这与 promise.all 无关,我希望尽可能在最后将函数与 promise.all 一起使用,而不是按照链接帖子的建议手动执行操作.
如果这不可能,请告诉我。
javascript ×8
node.js ×5
async-await ×4
promise ×3
asynchronous ×2
angular ×1
onsubmit ×1
opera ×1
recursion ×1
settimeout ×1
sleep ×1
standards ×1
timeout ×1
typescript ×1