相关疑难解决方法(0)

什么是sleep()的JavaScript版本?

有没有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)

这不是JavaScriptSleep的重复- 动作之间的延迟 ; 我希望在函数中间实现真正的睡眠,而不是在执行代码之前的延迟.

javascript sleep

2115
推荐指数
41
解决办法
241万
查看次数

在javascript中进行多项任务?[a,b,c] = [1,2,3]是什么; 意思?

对于项目,开发人员向我们发送了一个.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 standards opera google-chrome

20
推荐指数
3
解决办法
7536
查看次数

如何在 VSCode 调试器中执行异步函数?

如果我在一些 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?的重复项

这个问题似乎是在问如何在异步函数中放置断点,而我试图从调试器实际执行该函数。

我在此处的新帖子中重新创建了这个问题,因为我不认为它与上述帖子重复。这是我第一次发帖,所以希望这是正确的做法。

javascript node.js async-await visual-studio-code

12
推荐指数
1
解决办法
3933
查看次数

wait setTimeout 不是同步等待

我知道这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)

asynchronous node.js promise async-await

9
推荐指数
1
解决办法
1万
查看次数

JavaScript中的递归异步函数

我正在尝试使用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)

javascript recursion asynchronous node.js async-await

7
推荐指数
2
解决办法
6340
查看次数

使用 setInterval() 的无限异步循环

我有需要一些调用异步函数的无限循环的 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)

我担心的是,如果异步函数需要很长时间才能完成,打开的引用会堆积起来,这可能会导致内存崩溃。

  1. setInterval 是适合这项工作的工具吗?有没有更合适的工具?
  2. 如果前一次运行没有返回,确保 execute() 函数不会启动的最优雅的方法是什么?

javascript node.js

6
推荐指数
1
解决办法
6259
查看次数

Js:没有函数参数的setTimeOut?

为什么我们需要将函数传递给Javascript setTimeOut https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout

为什么我们不能像简单的那样做

setTimeOut(1000);
Run Code Online (Sandbox Code Playgroud)

我可以在那里传递空或无功能吗?

我想在每次迭代后等待for循环.

javascript timeout settimeout

3
推荐指数
2
解决办法
2万
查看次数

javascript async await 使用 Promise 提交带有 onsubmit 的表单

我有以下代码。

<!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 秒钟。 …

javascript onsubmit promise async-await

3
推荐指数
1
解决办法
1万
查看次数

angular/typescript中的顺序代码执行

如何让我的代码按顺序运行?例如,

  1. 如果我有一个for循环从服务获取一些数据,我希望n+1迭代只在nth迭代完成后运行.

  2. 我希望循环之后的代码只有在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)

typescript angular

2
推荐指数
1
解决办法
4549
查看次数

Node - 将函数推入数组以与 Promise.all 一起使用

我正在试验 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 node.js promise

2
推荐指数
1
解决办法
7435
查看次数