Put number first 函数响应:Promise { <pending> }

Put number first function respond with this: Promise { <pending> }

我正在使用以下函数将一些数据放入 dynamo DB table 但我收到的响应是 Put number first 函数响应如下:Promise { pending } 这是代码

 async function putNumberFirst(phoneNumber) {
         return new Promise(function(resolve, reject) {
          console.log("inside put Numer function");
             let params = {
                 TableName: process.env.CHAT_DATA_TABLE,
                 Item: {
                     'phoneNumber': phoneNumber
                 }

             };
             console.log("PARAMS", params);
             docClient.put(params, function(err, results) {
                 if (err) {
                     console.error(
                         "Unable to put new connection data. Error:",
                         JSON.stringify(err, null, 2)
                     );
                     reject();
                 }
                 else {
                     console.log("Put succeeded.", results);
                     resolve("Success!");
                 }
             });
         });

     }

任何帮助将不胜感激

您混淆了异步函数、承诺和回调。我建议您首先尝试了解这些非常重要的主题:https://towardsdev.com/callback-vs-promises-vs-async-await-29572e4a0c8

这是我的 编辑 async/await 你的代码示例:

const putNumberFirst = async (phoneNumber) => {
  const params = {
      TableName: process.env.CHAT_DATA_TABLE,
      Item: { phoneNumber }
  };

  try {
      console.log("Params: ", params);
      const results = await docClient.put(params).promise();
      console.log('Put succeeded: ', results);
      return results;
  } catch (err) {
      console.error('Unable to put new connection data. Error:', JSON.stringify(err, null, 2));
      throw err;
  }
}

然后,从任何你想调用putNumberFirst函数的地方,你需要等待响应:

await putNumberFirst(number);

请记住,await 仅在 async 函数中可用,您可能需要相应地重组代码。

您可以使用 then/catch 或回调而不是 async/await,但除非绝对必要,否则请不要混淆这些东西。异步代码是 JS 的基础,了解它的工作原理绝对至关重要。投入一些时间,这将是值得的。