gpt4 book ai didi

node.js - 在 Node.js 7.6+ 中是否有任何可能的方法可以使用内置的等待而无需异步?

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:11 24 4
gpt4 key购买 nike

我是一名 Node.js 程序员。在 Node.js 7.6 发布之前,我使用了模块' asyncawait ' 让我的代码处于异步等待风格。编码风格如下:

var async = require('asyncawait/async');
var await = require('asyncawait/await');

var getData = async(function(finder){
return await(db.collection.findOne(finder));
});

var f = function(finder){
return await(getData(finder));
};

try{
let result = f({id: 1});
}catch(err){
}

Node.js 7.6发布后,正式内置了async-await功能。但是 async 和await 函数(或者称它们为关键字?)似乎必须在一个函数中配对。如果我将代码更改为,

var getData = async function(finder){
return await db.collection.findOne(finder);
}

var f = function(finder){
return await getData(finder);
};

try{
let result = f({id: 1});
}catch(err){
}

无法识别“f”函数中的“await”关键字。除非我将代码更改为,

var getData = async function(finder){
return await db.collection.findOne(finder);
}

var f = async function(finder){
return await getData(finder);
};

try{
let result = await f({id: 1});
}catch(err){
}

代码会很乏味。有没有可能在函数中使用内置的等待而不使用异步?

最佳答案

Await 只能在异步函数内使用。

The await expression causes async function execution to pause, to wait for the Promise's resolution, and to resume the async function execution when the value is resolved. It then returns the resolved value. If the value is not a Promise, it's converted to a resolved Promise.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

关于node.js - 在 Node.js 7.6+ 中是否有任何可能的方法可以使用内置的等待而无需异步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43066000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com