Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中承诺的执行顺序_Javascript_Node.js_Promise_Async Await - Fatal编程技术网

javascript中承诺的执行顺序

javascript中承诺的执行顺序,javascript,node.js,promise,async-await,Javascript,Node.js,Promise,Async Await,我有一个示例程序来了解承诺和异步/等待的工作原理。但我对承诺的执行顺序有点困惑。有人能解释一下这是怎么回事吗 案例1 案例2 我有另一个例子使用async/await做同样的事情。但按这个顺序执行是正确的 //Async await test async function AsyncTest(){ console.log("Inside async1") var k = 0; for(i=0; i< 1000; i++ ){ k += i; }

我有一个示例程序来了解
承诺
异步/等待
的工作原理。但我对承诺的执行顺序有点困惑。有人能解释一下这是怎么回事吗

案例1 案例2 我有另一个例子使用async/await做同样的事情。但按这个顺序执行是正确的

//Async await test
async function AsyncTest(){
    console.log("Inside async1")
    var k = 0;
    for(i=0; i< 1000; i++ ){
      k += i;
    }
  console.log('async1 result : '+ k);
  const result =  await AsyncTest2();
  console.log(result)
  console.log("finished async");
}

async function AsyncTest2(){
   return "Inside async2";
}

AsyncTest();
谢谢。

如果你打电话给
,那么(cb)
在一个承诺上,一个新的承诺被创建并由它返回,它将解析callbback返回的任何内容。如果这本身就是一个承诺,那么在链条继续之前,人们将等待这一承诺。就你而言,你做到了:

promiseTest.then((res)=> {
 console.log('Promise1 result : '+ res);
 return undefined; // implicit return
}).then(() => {
 /* doesnt matter what you do here */
 return undefined;
}).then(finish)

你是否附加了另一个
。那么
到另一个承诺对这个承诺链并不重要。

你没有从回调中返回第二个承诺,因此它不是同一个承诺链的一部分。@jonrsharpe你能纠正我做错的部分吗?
返回promiseTest2。然后(…)
好的,我纠正了它。而且它的工作顺序正确。那么这两种方法有什么区别呢?那么这两种方法之间有什么区别呢?两者的工作格式是否相同?
//Async await test
async function AsyncTest(){
    console.log("Inside async1")
    var k = 0;
    for(i=0; i< 1000; i++ ){
      k += i;
    }
  console.log('async1 result : '+ k);
  const result =  await AsyncTest2();
  console.log(result)
  console.log("finished async");
}

async function AsyncTest2(){
   return "Inside async2";
}

AsyncTest();
Inside async1
async1 result : 499500
Inside async2
finished async
promiseTest.then((res)=> {
 console.log('Promise1 result : '+ res);
 return undefined; // implicit return
}).then(() => {
 /* doesnt matter what you do here */
 return undefined;
}).then(finish)