gpt4 book ai didi

javascript - 用javascript写一个可以顺序运行异步函数的库

转载 作者:行者123 更新时间:2023-11-29 21:46:30 24 4
gpt4 key购买 nike

我想用 javascript 编写一个可以运行如下代码的库:

seq.next(function(done){
setTimeout(done,3000);
}).next(function(done){
setTimeout(function(){
console.log("hello");
done();
},4000);
}).end(); //.next morever

其实我想写一个可以按顺序(顺序)执行异步函数的库。每个异步函数都应在其末尾运行“完成”函数。

谁能帮帮我。非常感谢!

最佳答案

图书馆是:

var seq = (function () {

var myarray = [];
var next = function (fn) {
myarray.push({
fn: fn
});
// Return the instance for chaining
return this;
};

var end = function () {
var allFns = myarray;

(function recursive(index) {
var currentItem = allFns[index];


// If end of queue, break
if (!currentItem)
return;

currentItem.fn.call(this, function () {
// Splice off this function from the main Queue
myarray.splice(myarray.indexOf(currentItem), 1);
// Call the next function
recursive(index);
});
}(0));
return this;
}

return {
next: next,
end: end
};
}());

这个库的使用是这样的:

seq.next(function (done) {
setTimeout(done, 4000);
}).next(function (done) {
console.log("hello");
done();
}).next(function (done) {
setTimeout(function () {
console.log('World!');
done();
}, 3000);
}).next(function (done) {
setTimeout(function () {
console.log("OK");
done();
}, 2000);
}).end();

关于javascript - 用javascript写一个可以顺序运行异步函数的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30997147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com