异步函数就是用async修饰的函数,没有明确声明返回值类型的情况下,默认会返回一个Promise对象。Promise对象表示一个异步操作的最终状态和结果值。
如果在异步函数中没有明确地使用return语句返回一个Promise对象,则默认返回一个已经resolve(value)的Promise对象,其中value为undefined。
如果返回的值不是Promise对象,JavaScript会隐式地将其转换为Promise对象,然后再执行.then()方法进行回调处理。
下面是一个具体的例子,演示了即使异步函数没有返回Promise对象,仍然可以使用.then()方法进行回调处理。
async function foo() {
console.log('start foo');
}
foo().then(function() {
console.log('after foo');
})
在上面的例子中,虽然foo()函数没有显式地使用return语句返回一个Promise对象,但依然能够使用.then()方法进行回调处理。
这是因为,JavaScript引擎在执行foo()函数时,会自动将其转换成一个Promise对象,因为async函数默认会返回一个Promise对象,该Promise对象隐式地被resolve成undefined,所以调用.then()方法时仍然可以执行后续的回调函数。