代码之家  ›  专栏  ›  技术社区  ›  Fil

将返回数据放入resolve函数

  •  0
  • Fil  · 技术社区  · 6 年前

    我有使用ajax的代码

        $.ajax({
            url: '/shipments/courrier/get',
            type: 'GET',
            beforeSend: function (request) {
                return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
            },
            success: function(response){
                let inputOptionsPromise = new Promise(function (resolve) {
                    console.log(response);
    
                    setTimeout(function () {
                        resolve({
                            '#FF0000': 'Red',
                            '#00FF00': 'Green',
                            '#0000FF': 'Blue'
                        })
                    }, 2000)
                })
            }
        });
    

    响应已返回数据

    [{id: 1, name: "DHL", link: "https://webtrack.dhlglobalmail.com/?trackingnumber=",…},…]
    0 : {id: 1, name: "DHL", link: "https://webtrack.dhlglobalmail.com/?trackingnumber=",…}
    1 : {id: 2, name: "LBC", link: "https://www.lbcexpress.com/track/?tracking_no=",…}
    

    但问题是,我不知道如何解决它()

    setTimeout(function () {
        resolve({
            '#FF0000': 'Red',
            '#00FF00': 'Green',
            '#0000FF': 'Blue'
        })
    }, 2000)
    

    替换此值

    '#FF0000': 'Red',
            '#00FF00': 'Green',
            '#0000FF': 'Blue'
    

    有谁能给我更好的解决办法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   ADyson    6 年前

    基于你在评论中发布的链接( SweetAlert dropdown dynamically add items in list ,以供参考),似乎需要用AJAX调用的结果填充SweetAlert。由于SweetAlert支持提供Promise对象作为“options”参数,并且由于jQuery$.ajax()返回一个实现Promise接口的对象,因此您可以很容易地将这两件事结合起来:

    var optionsDataPromise = $.ajax({
            url: '/shipments/courrier/get',
            type: 'GET',
            beforeSend: function (request) {
                return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
            }
        });
    
    swal({
      input: 'select',
      inputOptions: optionsDataPromise
    })
    

    在本例中,我们将$.ajax返回的承诺分配给 optionsDataPromise 变量,然后将该变量赋给 swal() 作为 inputOptions 参数。当Promise解析时(正如您可能猜到的,当AJAX调用成功返回时会发生这种情况),那么警报将填充基于AJAX调用返回的数据的选项。

    P、 链接中的示例只是一个静态承诺,旨在模拟有用承诺(如AJAX请求)的行为。因为它总是返回相同的数据,这些数据可能直接放在一个对象中,所以它在本质上并没有实现任何有用的功能,它不是一个可以直接复制的构造。