如何在promise中捕获此异常?

时间:2019-06-24 11:50:55

标签: javascript jquery exception es6-promise sweetalert

请考虑以下代码:特别是在选择“无”时。使用sweetalerts2

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<mat-slide-toggle id="toggleclick">
  View All Statuses
</mat-slide-toggle>

<div class="row">
    <div class="col-12 d-block">
      <svg id="bar-chart" width="550" height="300"></svg>
      D-Block
    </div>
    <div class="col-12 d-none hide">
      <svg id="stacked-bar-chart" width="550" height="300"></svg>
      D-None
    </div>
</div>

在选择“无”时,出现JavaScript错误。例如,在firefox控制台上,我得到 “未捕获的例外:您需要选择一个选项” 我意识到我可能是绝望的新蜂

1 个答案:

答案 0 :(得分:1)

在使用运动警报器时,您需要resolve()输入错误消息,而不是reject()错误消息,因此,您需要将reject(...)更改为:

resolve('You need to select an option');

请参见以下示例:

Swal.fire({
  html: 'blah blah ',

  input: 'select',
  inputOptions: {
    'none': 'Please select an option:',
    'option1': 'First Option',
    'option2': 'Second Option'
  },
  inputValidator: function(value) {
    return new Promise(function(resolve, reject) {
      if (value != 'none') {
        resolve();
      } else {
        resolve('You need to select an option');
      }
    });
  }
}).then(function(theoption) {
  if (theoption.value) {
    Swal.fire('Great!');
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@8"></script>

有关更多详细信息,请参见documentation