Javascript – Problem mit der Parameterinjektion in ES6
为情所困
为情所困 2017-05-19 10:26:27
0
2
459
class loginCtrl {
    constructor(http) {
        [this.http, this.name] = [http, 'login'];
    }

    login() {
        console.log(this.http);
        console.log(this.name);
    }
}
loginCtrl.$inject = ['http'];

let a = new loginCtrl();
a.login();


Nach einem solchen Aufruf ist http undefiniert, kann aber durch Klicken auf das Ereignis ausgedruckt werden.


Was ist los? Angular wird zum Injizieren von http verwendet.
http-Code lautet wie folgt:

class http {
    constructor($http) {
        this.$http = $http;
        this.options = {
            headers: {
                'Content-type': 'application/json;charset=utf-8',
                'accessToken': 2332
            }
        }
    }
    get(data, url, cb) {
        let gets = {method: 'GET', params: data, url: url}
        Object.assign(gets, this.options)
        this.$http(gets).then(function (data) {
            console.log('success');
            cb(data);
        })
    }
}

http.$inject = ['$http'];

export default angular.module('http', [])
    .service('http', http)
    .name;
为情所困
为情所困

Antworte allen(2)
大家讲道理

let a = new loginCtrl(http)

你没有给http到constructor

漂亮男人

因为你注入是异步方法,其他是同步方法,同步方法会从上到下执行,但是遇到异步方法的地方会新开一个线程去执行,也就是你注入http的这个方法和你的login方法并行,直接运行,当你的login线程运行完后,http注入这个线程还没来得及返回值,就打印出来了。但是添加了点击事件后,就开了个事件触发线程,当一个事件被触发时该线程会把事件添加到待处理队列的队尾,这样点击后就收到了http注入后返回的值,大概就是这样。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage