我确定我的问题是基于对node.js中的异步编程缺乏了解,但这是可行的。
例如:我有一个要爬网的链接列表。当每个请求都返回时,我想知道它的URL。但是,大概是由于竞争条件造成的,每个请求都将URL返回设置为列表中的最后一个值。
var links = ['http://google.com', 'http://yahoo.com'];
for (link in links) {
var url = links[link];
require('request')(url, function() {
console.log(url);
});
}
预期产量:
http://google.com
http://yahoo.com
实际输出:
http://yahoo.com
http://yahoo.com
所以我的问题是:
PS:对于1.我不想要一种解决方案来检查回调的参数,而是希望回调的一种通用方法是“从上方”了解变量。
您的url
变量没有作用于for
循环,因为JavaScript仅支持全局和函数作用域。因此,您需要为request
调用创建一个函数作用域,url
以使用立即函数来捕获循环的每次迭代中的值:
var links = ['http://google.com', 'http://yahoo.com'];
for (link in links) {
(function(url) {
require('request')(url, function() {
console.log(url);
});
})(links[link]);
}
顺便说一句,require
在循环中间嵌入a 不是一个好习惯。它可能应该重写为:
var request = require('request');
var links = ['http://google.com', 'http://yahoo.com'];
for (link in links) {
(function(url) {
request(url, function() {
console.log(url);
});
})(links[link]);
}
问题内容: 我需要更新我的时间。该值由正在执行的函数返回。 返回一个整数。 这将返回未防御状态。因此,我需要获取计数并将其传递给 问题答案: 如果您需要在每次调用之后更改重复间隔,则不能使用-使用恒定重复。您需要使用,因此您可以每次更改时间段:
问题内容: 如何在不刷新页面的情况下将变量从jQuery传递到PHP?当我单击一个复选框时,我想将一个变量从jQuery传递到PHP。我也在使用formdialog。 我的PHP代码 我的JavaScript代码 问题答案: Ajax可以做到这一点。谷歌它,并检查api.jquery.com并查看ajax函数,.ajax(),.post(),.get(),.load()等。 关于您的特定问题,这是
问题内容: 使用异步模块时,如何将参数从上一个回调传递到下一个回调? 这是来自github上的文档的示例 问题答案: 您可以将异步函数与异步模块的函数链接在一起。这使您可以说:“先执行x,然后将结果传递给函数y,然后将结果传递给z”。从[docs] [1]复制: 您严格不需要异步模块来完成此任务;此功能旨在使代码更易于阅读。如果您不想使用异步模块,则始终可以只使用传统的回调。
本文向大家介绍如何将JavaScript变量传递给PHP?,包括了如何将JavaScript变量传递给PHP?的使用技巧和注意事项,需要的朋友参考一下 您可以在PHP的同一页面上轻松获取JavaScript变量值。尝试以下代码L。
问题内容: 我有一个返回散列的javascript函数。我需要将此哈希传递给php来进行处理。最好的方法是什么? 问题答案: 假设您的意思是 JavaScript 函数返回哈希并将其发送给PHP- 然后是AJAX
问题内容: 可以说我有一个SP,其语句如下: 但是数据必须通过包含值字符串的单个变量到达该子句。以下内容链接 但是它不能那样工作。任何想法如何做到这一点? 问题答案: 像这样传递参数值- 。然后,使用FIND_IN_SET函数就足够了-