async.js和系列问题
async.js and series issue
尝试在连接后运行fetch。Fetch比connect快,在控制台中我会收到Fetch错误,因为它返回结果的速度比连接完成的速度快。但在异步系列的文档中,有一个工具可以在第一个函数返回结果后运行第二个函数。解决方案可以挽救局面,但并不美观。当一切都没有承诺时,我该如何等待?
var bets = [];
async.series([
function(callback){
setTimeout(function(){
connect();
callback(null, 'one');
},1)
},
function(callback){
setTimeout(function(){
fetch_last_30();
callback(null, 'two');
},2000)
}
]);
UPD我的连接功能
function connect(){
var url = "https://api....../login";
/* connect to site and get access_token to access other api*/
$.post(
url,
{username: "000", password : "000"},
function(data){
access_token = data["access_token"];
console.log(data["access_token"]);
}
)
}
在connect()
调用完成异步工作之前,您将不需要调用回调。这是异步库完成其工作的唯一方法。由于connect()
是异步的,所以它本身可能有一个回调,您可以使用它来知道它何时实际完成。
此外,如果正确使用异步库,则根本不需要setTimeout()
调用。
从概念上讲,您希望connect()
函数在完成异步操作时调用传入的回调:
var bets = [];
async.series([
function(callback){
connect(function() {
callback(null, 'one');
});
},
function(callback){
fetch_last_30();
callback(null, 'two');
}
]);
虽然,我个人会在这里找到一个更好的解决方案来对两个操作进行排序,但您可以将connect()
函数更改为:
function connect(callback){
var url = "https://api....../login";
/* connect to site and get access_token to access other api*/
$.post(
url,
{username: "000", password : "000"},
function(data){
access_token = data["access_token"];
console.log(data["access_token"]);
callback(data);
}
)
}
这里有一个使用promise而不是异步库的版本:
function connect(callback){
var url = "https://api....../login";
/* connect to site and get access_token to access other api*/
return $.post(url, {username: "000", password : "000"}).then(function(data){
access_token = data["access_token"];
console.log(data["access_token"]);
return data;
});
}
connect().then(function(data) {
fetch_last_30();
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- async.js和系列问题
- 有问题的突出显示(悬停)一个系列,突出显示图表
- D3.js多系列折线图工具提示问题
- Highchart:从 java 传递系列映射时绘制日期时间图表问题
- NPM 异步系列问题
- Highcharts系列格式问题(AngularJs)
- 选择选项字体系列在MAC os(chrome和safari浏览器问题)和windows safari浏览器问题中不工作
- 高图系列选项的问题
- 更新在不可见的HighCharts系列问题上改变的数据点
- Highcharts向下钻取异步多系列问题
- 3D Highchart动态系列添加问题
- 节点.js硒 IPv6 问题(套接字异常协议系列不可用)