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)