使用fetch with-in需要js

时间:2016-11-11 06:28:46

标签: javascript requirejs fetch

我正在尝试学习需要js,并正在努力扩展从这里找到的多页面演示:https://github.com/requirejs/example-multipage和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);

});

(我将polyfil加载作为垫片,这就是为什么它包含在define参数中 - 但是最新的chrome支持fetch)

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

目前,我似乎只收到了承诺,并且无法取出json。虽然如果我在console.log中承诺我可以在那里看到成功的响应。

1 个答案:

答案 0 :(得分:0)

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

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