woods_f
دوشنبه 29 شهریور 1395, 09:52 صبح
سلام
من 3 تا تابع دارم که میان روی یک تعداد دیتا زیاد جستجو میکنم. حالا میخوام این 3 تابع همزمان و به طور موازی با هم run بشن و هر کدوم که زمان جستجو کمتری داشت دیتا من رو بده.
SCoder
دوشنبه 29 شهریور 1395, 18:25 عصر
میتونی از promise استفاده کنی مثلا تو front-end بدین صورت :
var promise1 = new Promise(function(resolve, reject) {
setTimeout(resolve, 500, "one");
});
var promise2 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, "two");
});
Promise.race([promise1, promise2]).then(function(value) {
console.log(value); // "two"
// Both resolve, but p2 is faster
});
و در back-end با استفاده از package q میتونی همین رو پیاده سازی کنی فقط یکم syntax فرق میکنه ...
var Q = require('q');
function doA(){
var deferred = Q.defer();
setTimeout(()=>{deferred.resolve('A');},300);
return deferred.promise;
}
function doB(){
var deferred = Q.defer();
setTimeout(()=>{deferred.resolve('B');},600);
return deferred.promise;
}
Q.race([doA(),doB()])
.then((val)=>{console.log(val);})
.catch((e) => {console.log(e.message);});
woods_f
دوشنبه 29 شهریور 1395, 21:27 عصر
خیلی ممنون که جواب دادین.
نمیشه با پکیچ async این کار کرد؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.