gpt4 book ai didi

node.js - grunt 异步函数的 Node 替代方案

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

我正在尝试用一些简单的 Node 代码替换一些非常旧的 grunt 代码。

某些函数使用 done = this.async() 来提供一个句柄,您可以用它来表示工作已完成。

如何用 Node 代码替换它?

最佳答案

我认为最好的方法可能是使用 ES2017/Node.js 7.6 中提供的 async/await 功能。这不会像 did = this.async() 模式那样将异步函数转变为同步函数,但它允许函数调用看起来像是异步的。

必须进行的一项修改是调用函数(在本例中为 testGetResult)必须标记为异步

例如,假设您有一个如下所示的函数:

function getResult() {
var done = this.async();
asyncCall(function(result) {
done(result);
})
}

我们将替换为:

function getResult() {
return new Promise(function(resolve, reject) {
asyncCall(function(result) {
resolve(result);
});
})
}

/* Example of an asynchronous function called by someFunction. */
function asyncCall(callback) {
setTimeout(callback, 1000, { status: 42 } );
}

async function testGetResult() {
/* Make getResult _look_ like it is synchronous. */
let result = await getResult();
console.log('result: ', result);
}

testGetResult();

如果您要尝试保持当前使用的确切语法,我认为您必须编写一些非常时髦的代码以某种方式阻止函数的执行(例如 getResult),直到调用 did() 函数。

关于node.js - grunt 异步函数的 Node 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51075473/

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