Javascript 如何在退货新承诺内延迟执行

Javascript 如何在退货新承诺内延迟执行,javascript,promise,async-await,delay,Javascript,Promise,Async Await,Delay,我正在使用javascript开发一个基于web的算法可视化工具,因此在执行过程中需要一些暂停。为了暂停执行,我使用了constdelay=ms=>newpromise(res=>setTimeout(res,ms))和被调用函数等待延迟(500),这是我在堆栈溢出上发现的,它与非递归算法配合使用效果很好。为了使递归算法有序,我使用了返回新承诺((解析,拒绝)和.then()。但是现在我不能在返回新承诺的中使用wait,原因是什么,我走对了吗? 我的代码如下所示(快速排序) const quic

我正在使用javascript开发一个基于web的算法可视化工具,因此在执行过程中需要一些暂停。为了暂停执行,我使用了
constdelay=ms=>newpromise(res=>setTimeout(res,ms))和被调用函数<代码>等待延迟(500),这是我在堆栈溢出上发现的,它与非递归算法配合使用效果很好。为了使递归算法有序,我使用了
返回新承诺((解析,拒绝)
.then()
。但是现在我不能在
返回新承诺的
中使用wait,原因是什么,我走对了吗?
我的代码如下所示(快速排序)

const quick=async(低、高)=>
{   
返回新承诺((解决、拒绝)=>
{
如果(低<高)
{  
变量轴=颜色[高]
变量i=低-1

对于(var j=low;j您不需要
返回新的承诺(…
,因为异步函数已经返回承诺。您不能使用
wait
,因为承诺处理程序不是异步函数。请尝试以下操作:

const quick=async(低、高)=>{
如果(低<高){
var pivot=颜色[高];
var i=低-1;

对于(var j=low;j I removed
return new Promise(…
现在延迟开始工作,但现在轴的左部分和右部分同时兴奋。第一个
是否应该等待延迟(500);
不在
if(){…}
子句?即只有在进行交换时才延迟。可能不会造成很大的差异,但这正是问题所要求的。当然,你可以将延迟放在任何你想放的地方。@D.Pardal它正在工作。
.then()
有什么问题吗?你使用了
然后(快速(pi+1,高))
而不是
然后(=>{quick(pi+1,高);});
,因此立即调用了
quick
。这看起来像,根本没有使用
async
/
wait
const quick = async(low, high) => 
{   
  return new Promise((resolve,reject) =>
  {

    if (low < high)  
    {  
  
      var pivot = color[high]
      var i = low -1 
  
      for(var j = low; j <= high - 1; j++) 
      {
        // I want some delay here
        if(color[j] < pivot)
        {
          i++
          swap(i,j)  
         // delay here
        }
  
      }
      var pi = i+1;  
  
      swap(pi,high)
  
      // and delay here

      quick( low, pi - 1).then(quick( pi + 1, high));
     
    }
    resolve();
  });
}