PDA

View Full Version : تشخیص تابع سریع تر در node



woods_f
دوشنبه 29 شهریور 1395, 08:52 صبح
سلام

من 3 تا تابع دارم که میان روی یک تعداد دیتا زیاد جستجو می‌کنم. حالا می‌خوام این 3 تابع همزمان و به طور موازی با هم run بشن و هر کدوم که زمان جستجو کمتری داشت دیتا من رو بده.

SCoder
دوشنبه 29 شهریور 1395, 17: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, 20:27 عصر
خیلی ممنون که جواب دادین.

نمی‌شه با پکیچ async این کار کرد؟