即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

尤达玛

我有一些我正在尝试运行的示例代码,我想要一些正在执行的异步函数被同步调用。我知道您需要向函数添加 async 才能等待。我已经这样做了。尽管我收到以下错误:

  let result = await promise;
               ^^^^^

SyntaxError: await is only valid in async function
    at new Script (vm.js:80:7)
    at createScript (vm.js:274:10)
    at Object.runInThisContext (vm.js:326:10)
    at Module._compile (internal/modules/cjs/loader.js:664:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)

对于上下文,这是我的代码:


async function main() {
  var client = Client.fromConnectionString(deviceConnectionString, Protocol);
  fs.stat(filePath, function (err, fileStats) {
  var fileStream = fs.createReadStream(filePath);

  for (var i=0;i<10;i++) {

    let promise = new Promise((res, rej) => {
      client.uploadToBlob('testblob.txt', fileStream, fileStats.size, function (err, result) {
        if (err) {
          console.error('error uploading file: ' + err.constructor.name + ': ' + err.message);
        } else {
          console.log('Upload successful - ' + result);
        }
        res(i);
      });
    })
    let result = await promise;
    console.log(result);
  }

  fileStream.destroy();
  });
}

main();

当我的函数已经是异步的时,为什么我会收到上述错误?

tytyf

您正在尝试在未标记为 async(您的回调)的函数中使用 async-await。

只需让您的回调成为 async-await 函数即可。

async function main() {
  var client = Client.fromConnectionString(deviceConnectionString, Protocol);
  fs.stat(filePath, async function (err, fileStats) {
  var fileStream = fs.createReadStream(filePath);

  for (var i=0;i<10;i++) {

    let promise = new Promise((res, rej) => {
      client.uploadToBlob('testblob.txt', fileStream, fileStats.size, function (err, result) {
        if (err) {
          console.error('error uploading file: ' + err.constructor.name + ': ' + err.message);
        } else {
          console.log('Upload successful - ' + result);
        }
        res(i);
      });
    })
    let result = await promise;
    console.log(result);
  }

  fileStream.destroy();
  });
}

main();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Await仅在使用Node.js的异步函数中有效

Javascript:SyntaxError:等待仅在异步函数中有效

等待仅在异步函数中有效,同时我已经在函数中放置了“异步”

await 仅在异步函数 discord.js 中有效

“await 仅在异步函数中有效” discord.js

Sails.js SyntaxError:await 仅在异步函数中有效

discord.js机器人等待仅在异步功能中有效

SyntaxError:当使用Node JS连接到Mongo DB时,await仅在异步功能中有效

module.exports SyntaxError:等待仅在异步函数中有效

module.exports SyntaxError:等待仅在异步函数中有效

`SyntaxError:await 仅在异步函数中有效`,同时尝试在 node rest api 中注册用户

为什么该函数调用抛出“等待仅在异步函数中有效”的语法错误,即使该函数是异步的?

等待仅在异步功能中有效

等待仅在异步功能中有效

等待仅在异步功能中有效

NodeJs等待仅在异步功能中有效

错误:等待仅在异步功能中有效

为什么我的 await 在我的功能中不起作用?“语法错误:等待仅在异步函数中有效”

无法将Node.js异步函数识别为有效的异步函数

for循环中的“ await仅在异步函数中有效”

For 循环 - SyntaxError: await 仅在异步函数中有效

在等待时出错,该等待仅在使用异步函数时对异步函数有效

给出 await 的异步函数仅在异步函数中有效

“await 仅在异步函数中有效”,而它是一个异步函数

在node-js中异步/等待获取

在node.js中异步/等待理解

Node.js中的异步/等待行为

在异步函数Node.Js中调用的异步函数

带伪造者的Web爬网循环:“等待仅在异步功能中有效”