【问题标题】:using fetch with-in require js使用 fetch with-in 需要 js
【发布时间】:2016-11-11 14:42:31
【问题描述】:

我正在尝试学习 require js,并且正在努力扩展从此处找到的多页演示:https://github.com/requirejs/example-multipage with fetch。

从上面 git repo 中的演示代码中,我将 www/js/app/model/m1.js 代码修改为如下所示。演示中的其他内容基本相同。

define(['./Base','fetch'], function (Base) {

    var m1 = fetch('data/people.json')
    .then(function(response) {
        return response.json();
    });

    return new Base(m1);

});

(我将 fetch polyfil 作为 shim 加载,这就是为什么它包含在定义参数中 - 但在支持 fetch 的最新 chrome 上开发)

理想情况下,这会返回一个新的 Base 对象,该对象使用从 fetch 中解析的 json 来填充其数据源。 this.data = data,当新的 Base 对象被创建时。

不过,目前看来,我只能收回承诺,无法将 json 取出。虽然如果我 console.log 承诺我可以在那里看到成功的响应。

【问题讨论】:

    标签: javascript requirejs fetch


    【解决方案1】:

    我认为问题在于您如何分配给m1。不能使用fetch 的返回值。你的代码执行顺序如下:开始抓取,创建并返回Base,从fetch中接收数据。因此,当您构建 Base 时,您还没有数据。这是 JS 中的常见模式(和陷阱)。你可以使用回调或承诺吗?

    define(['./Base','fetch'], function (Base, callback) {
        fetch('data/people.json')
        .then(function(response) {
            callback(response.json());
            // or maybe you want 
            //Base(response.json());
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-17
      • 2020-06-04
      • 2022-12-27
      • 2021-02-01
      • 2021-05-21
      • 2021-08-20
      • 1970-01-01
      • 2016-04-23
      相关资源
      最近更新 更多