这显然是散列密码的代码。但是,它在语法上究竟做了什么?为什么使用异步并以这种方式等待?和=>似乎没有定义函数。
确实定义了一个函数,并将hashPassword
分配给该函数。与此相同:
const hashPassword = async function( password ) {
return await bcrypt.hash( password,10 );
};
...或者这个(只是要清楚):
const hashPassword = async function( password ) {
const hashedPassword = await bcrypt.hash( password,10 );
return hashedPassword;
};
并在很大程度上(大部分情况下)与此相同:
async function hashPassword( password ) {
const hashedPassword = await bcrypt.hash( password,10 );
return hashedPassword;
}
...与此相同(忽略rej
的错误处理):
function hashPassword( password ) {
return new Promise( ( res,rej ) => bcrypt.hash( password,10 ).then( h => res( h ) )
}
如何在异步函数中返回值?我有一个异步函数返回一个数组,但是当被调用时它作为Promise对象被接收。
用async
注释函数时,它将返回值包装在Promise<T>
中。由于在JavaScript中使用async
函数时类型会在后台发生变化,因此我强烈建议使用TypeScript而不是JavaScript来避免此类错误。请注意,至少可以将await
与Promise和非Promise函数一起使用。
在JavaScript中,这两个功能是等效的:
async function foo() {
const v = await anotherAsyncFunction();
return v;
}
function foo() {
return new Promise( function(resolve,reject) {
anotherAsyncFunction().then( v => resolve( v ) );
} );
}
当一个函数返回一个Promise<T>
时,您可以await
来获取T
,也可以使用一个then
函数。
参见此处:How to return values from async functions using async-await from function?
本文链接:https://www.f2er.com/3160224.html