我正在Nodejs中构建一个服务器来从某个数据库中检索数据.我已经使用异步库一段时间了,并想出了一些事情,比如将瀑布放入并行函数中.
我偶然发现了一个问题,我首先需要执行一个查询,然后在其他可以同时执行的查询中使用该查询的结果.代码看起来像这样:
async.waterfall([
function(callback) {
connection.query( query,
function(err, rows, fields) {
if (!err) {
callback(null,rows);
} else {
callback(null,"SORRY");
}
}
);
},
async.parallel([
function(resultFromWaterfall,callback) {
connection.query(query,
function(err, rows, fields) {
if (!err) {
callback(null,rows);
} else {
callback(null,"SORRY");
}
}
);
},
function(resultFromWaterfall,callback) {
connection.query(query,
function(err, rows, fields) {
if (!err) {
callback(null,rows);
} else {
callback(null,"SORRY");
}
}
);
}
])
], finalCallback
);
Run Code Online (Sandbox Code Playgroud)
现在我的问题是从瀑布函数访问结果并在并行函数中使用它.
我很难在 React 中用继承代替组合。我将尝试基于 React 风格指南中不鼓励的继承来解释所提出的问题和我当前的解决方案。
首先,我在超级组件中定义公共状态和方法:
export default class SuperComponent extends Component {
constructor(props) {
super(props);
this.state = commonState;
}
foo() {
this.setState({a: 3});
}
render() {
return (
<div>
{this.getContent()}
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
然后我制作具有更多状态和方法的子组件。这些也应该可以访问超级组件的状态:
export default class SubComponent1 extends SuperComponent {
constructor(props) {
super(props);
this.state = Object.assign(this.state, subComponent1State);
}
bar() {
this.setState({b: 7});
}
getContent() {
return (
<div>
I'm subcomponent 1
</div>
)
}
}
export default class SubComponent2 extends SuperComponent {
constructor(props) {
super(props);
this.state = …Run Code Online (Sandbox Code Playgroud)