我的 for of 循环在 1 次迭代后一直停止

My for of loop keeps stopping after 1 iteration

出于某种原因,我的 for of 循环在 1 次迭代后继续停止。

我希望得到 console.log 的 2 个 assetId 和 2 个价格,但是我只得到 1 个 assetId 和 1 个价格。然后,我可以获得适合的响应的唯一方法是当我通过刷新重新 运行 函数时(b/c 它检查我的 localStorage 并看到旧值已经存在)任何想法为什么它在之后停止一次迭代?

   main = async () => {
        await eth.connect({
          provider: "https://mainnet.infura.io/[key-goes-here]",
          contracts: [landRegistry, marketplace]
        });


    const response = await axios.get(
      "https://api.decentraland.org/parcels?status=open"
    );
    const viableProperties = response.data.data.parcels.filter(parcel => parcel.publication.price <= this.state.landPrice);
    for(let [key, value] of viableProperties.entries()) {
      const cost = value.publication.price;
      const asset = value.publication.asset_id;
      const commaPos = asset.indexOf(",");
      const coordinatesLat = parseFloat(asset.substring(0, commaPos));
      const coordinatesLong = parseFloat(
        asset.substring(commaPos + 1, asset.length)
      );
      const price = eth.utils.toWei(cost);
      const oldProperty = localStorage.getItem(asset)
      if (cost <= this.state.landPrice && oldProperty == null) {
        localStorage.setItem(asset, key);
        const assetId = await landRegistry.encodeTokenId(
          coordinatesLat,
          coordinatesLong
        );
        await marketplace.executeOrder(assetId, price)
      }
    } 
  };

**** 编辑 **** - 我目前等待 marketplace.executeOrder...我曾经有 console.log(资产,价格)

那么,既然您已经向我们展示了真正的代码:

await marketplace.executeOrder(assetId, price)

其中,for 循环停止的合理原因。如果 marketplace.executeOrder() returns 的承诺被拒绝或者如果它抛出同步异常,那么 async 函数将立即拒绝它的承诺并停止执行任何进一步的事情。

如果您希望即使该承诺失败也继续循环,您可以使用 try/catch.catch().

捕获被拒绝的承诺

请将此作为未来的建议,在问题中包含尽可能多的真实代码。如果您遗漏了您认为不是问题一部分的事情,您可能只是向试图帮助您的人隐藏了真正的问题(这种情况在这里经常发生,它确实减慢了我们提供帮助的能力)。