并发和并行有什么区别?
赞赏的例子.
我想创建一个显示来自数据库的一些数据的页面,所以我创建了一些从我的数据库中获取数据的函数.我只是Node.js的新手,所以据我所知,如果我想在一个页面中使用所有这些(HTTP响应),我必须将它们全部嵌套:
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
var html = "<h1>Demo page</h1>";
getSomeDate(client, function(someData) {
html += "<p>"+ someData +"</p>";
getSomeOtherDate(client, function(someOtherData) {
html += "<p>"+ someOtherData +"</p>";
getMoreData(client, function(moreData) {
html += "<p>"+ moreData +"</p>";
res.write(html);
res.end();
});
});
});
Run Code Online (Sandbox Code Playgroud)
如果有很多这样的函数,那么嵌套就成了问题.
有办法避免这种情况吗?我想这与你如何组合多个异步函数有关,这似乎是一个基本的东西.
我正在尝试使用此库初始化带有自动完成功能的两个输入.当我加载页面时,我将触发Ajax来初始化两个输入文本.
但我不知道当我的猫鼬发现完成时我怎么能发现.
这是我的服务器端代码:
app.post('/init/autocomplete', function(req, res){
var autocomplete = {
companies: [],
offices: []
};
// Find all companies
Company.find({}, function(err, companies) {
if (err) throw err;
companies.forEach(function(company) {
autocomplete.companies.push({value: company.name})
});
console.log('One');
});
// Find all offices
Office.find({}, function(err, offices) {
if (err) throw err;
offices.forEach(function(office) {
autocomplete.offices.push({value: office.name})
});
console.log('Two');
});
console.log('Three');
// res.json(autocomplete);
});
Run Code Online (Sandbox Code Playgroud)
我知道find方法是异步的.这就是为什么我按以下顺序看到我的console.log():
Three
One
Two
Run Code Online (Sandbox Code Playgroud)
如何完成并完成console.log('Three');时如何触发?Company.findOffice.find
我想看看console.log('Three');最后一个位置.
编辑:
我想我可以这样做:
app.post('/init/autocomplete', function(req, res){
var autocomplete = { …Run Code Online (Sandbox Code Playgroud) RxJS github repo解释了如何从事件或数组创建observable.我知道如何用异步或Promise替换回调地狱,但我找不到一个关于如何创建和返回我的函数执行异步任务的observable的示例.
例如,
x = getData();
y = getMoreData(x);
z = getMoreData(y);
...
getData(function(x){
getMoreData(x, function(y){
getMoreData(y, function(z){
...
});
});
});
Run Code Online (Sandbox Code Playgroud)
如何用observable替换这个回调地狱?我发现我们可以在RxJS github中调用observer.next()方法- 创建observable但是无法找出这个例子的实现.
javascript ×3
node.js ×2
asynchronous ×1
callback ×1
concurrency ×1
mongodb ×1
mongoose ×1
promise ×1
rxjs ×1