【问题标题】:I have a problem with a promise inside a function and a forEach method我对函数内部的承诺和 forEach 方法有疑问
【发布时间】:2022-02-10 20:54:20
【问题描述】:

我有这些水名,我希望输入一个水名,promise 会返回一个结果。问题是它没有返回任何东西,我该如何解决?

const water = [
  { nome: "Sant'anna", inStore: true },
  { nome: "Levissima", inStore: false },
  { nome: "Lete", inStore: true },
];

let inStoreTrue = [];
let inStoreFalse = [];
water.forEach(({ nome, inStore }) => {
  if (inStore === true) {
    inStoreTrue.push({ nome });
  } else {
    inStoreFalse.push({ nome });
  }
});

function checkWater(enter) {
  return new Promise((resolve, reject) => {
    if (enter === inStoreTrue) {
      resolve("la tua acqua è disponibile");
    } else if (enter === inStoreFalse) {
      reject("La tua acqua non è disponibile");
    }
  });
}

let prom = checkWater("Sant'anna");
prom
  .then((risultato) => {
    console.log(risultato);
  })
  .catch((err) => {
    console.log(err);
  });

【问题讨论】:

    标签: javascript object promise


    【解决方案1】:

    问题在于检查 enter === inStoreTrue 并输入 === inStoreFalse

    inStoreTrueinStoreFalse 是数组。因此,您不能简单地将字符串等同于数组。您必须使用一些数组方法检查数组中是否存在字符串。我为此使用了Array.some

    const water = [
      { nome: "Sant'anna", inStore: true },
      { nome: "Levissima", inStore: false },
      { nome: "Lete", inStore: true },
    ];
    
    let inStoreTrue = [];
    let inStoreFalse = [];
    water.forEach(({ nome, inStore }) => {
      if (inStore === true) {
        inStoreTrue.push({ nome });
      } else {
        inStoreFalse.push({ nome });
      }
    });
    
    function checkWater(enter) {
      return new Promise((resolve, reject) => {
        if (inStoreTrue.some((item) => item.nome === enter)) {
          resolve("la tua acqua è disponibile");
        } else if (inStoreFalse.some((item) => item.nome === enter)) {
          reject("La tua acqua non è disponibile");
        }
      });
    }
    
    let prom = checkWater("Sant'anna");
    prom
      .then((risultato) => {
        console.log(risultato);
      })
      .catch((err) => {
        console.log(err);
      });

    【讨论】:

    • 非常感谢!
    • @kas 请批准这个答案,这就是您要找的。很高兴也能获得支持。
    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多