我想初始化一个服务。创建实例一并在所需组件中使用它。 我创建了一个具有套接字初始化的Api类。
import client_ from '../services/service';
export default class Api{
client = null;
constructor() {
this.client = client_('/socket.io');
}
getProject(cb) {
var q = {};
q.parent_id = "#";
this.client.call('project', q, function(d) {
cb(d.data);
});
}
}
服务代码的一部分:
module.exports = function rpc(url) {
socket = io({path: url});
socket.on('connect', function(client) {
console.log("Socket connected!");
});
service.call = function(command, data, callback) {
if (null === socket || !socket.connected) {
callback({status: "FAIL", data: "Socket disconnected!"});
} else {
socket.send(command, function (a) {
callback(a);
});
}
}
return service;
}
所以,现在在某些组件中,我尝试使用这种构造
componentDidMount() {
this.api = new Api();
this.api.getProject((data) => {
console.log(data);
});
}
所以我的第一个问题是如何修改代码以初始化作为基本组件的App组件中的服务,并在其他注释中将其用作call(this.api.getProject()...,this.api。 getUser()...)
第二个问题:现在,当我初始化并调用getProject函数时,套接字尚未初始化。如何等待套接字初始化和调用方法?