Node.js 有没有办法在正常功能中使用wait?
是否可以在正常函数中使用wait 例如:Node.js 有没有办法在正常功能中使用wait?,node.js,Node.js,是否可以在正常函数中使用wait 例如: function myFunction(v1, v2) { let v3 = await some db operation; returns a array console.log(v3); //do something }; 不。异步编程的“魔力”——在JavaScript中,包括使用wait——在于它不会阻止其他代码的执行。如果您想使用它,您必须调整您的代码库,以便在有意义的地方使用async函数 如果您确实需要在正常的同
function myFunction(v1, v2) {
let v3 = await some db operation; returns a array
console.log(v3);
//do something
};
不。异步编程的“魔力”——在JavaScript中,包括使用wait
——在于它不会阻止其他代码的执行。如果您想使用它,您必须调整您的代码库,以便在有意义的地方使用async
函数
如果您确实需要在正常的同步函数中等待异步操作完成,则可以检查您正在使用的库是否也提供了sync
函数(例如有)。但是,除非有很好的理由不这样做,否则请让您的代码异步。不。异步编程的“魔力”——在JavaScript中,包括使用wait
——是它不会阻止其他代码的执行。如果您想使用它,您必须调整您的代码库,以便在有意义的地方使用async
函数
如果您确实需要在正常的同步函数中等待异步操作完成,则可以检查您正在使用的库是否也提供了
sync
函数(例如有)。但是,除非有很好的理由不这样做,否则请使您的代码异步。不,而且有很好的理由
在引入异步函数之前:以下是完全可能的:
function foo() {
var await = 42;
var result = await + 42;
}
如果他们使wait
在正常功能中可用,那么该代码将被追溯性破坏,导致所谓的向后兼容性破坏
这也是为什么
yield
仅在函数*
中可用的原因,这是有充分理由的
在引入异步函数之前:以下是完全可能的:
function foo() {
var await = 42;
var result = await + 42;
}
如果他们使wait
在正常功能中可用,那么该代码将被追溯性破坏,导致所谓的向后兼容性破坏
这也是为什么
yield
仅在function*
Yes中可用的原因,所有异步代码都是从某个普通函数调用的,但是no您不能在非异步函数中使用wait
关键字
异步函数在非异步函数中看起来像承诺
function myOuterFunction(v1, v2) {
myFunction(v1, v2)
.then(console.log)
.catch(console.error);
}
async function myFunction(v1, v2) {
let v3 = await some db operation; returns an array
console.log(v3);
//do something
};
(本例使用函数
console.log
和console.error
来处理返回的值和异常。)是的,所有异步代码都是从某个普通函数调用的,但是否您不能在非异步函数中使用等待
关键字
异步函数在非异步函数中看起来像承诺
function myOuterFunction(v1, v2) {
myFunction(v1, v2)
.then(console.log)
.catch(console.error);
}
async function myFunction(v1, v2) {
let v3 = await some db operation; returns an array
console.log(v3);
//do something
};
(本例使用函数
console.log
和console.error
来处理返回值和异常。)您应该向函数写入异步标志,以便执行需要在某个点产生执行的异步函数。因此,您要么编写一个可以等待的异步函数,要么使用承诺。无论哪种方式,您都不应该阻止线程等待异步操作,因为该操作将永远不会有机会执行。您应该将异步标志写入函数,以便执行需要在某个点产生执行的异步函数。因此,您要么编写一个可以等待的异步函数,要么使用承诺。无论哪种方式,您都不应该阻止线程等待异步操作,因为这样操作就永远不会有机会执行。