#javascript #node.js #asynchronous
#javascript #node.js #асинхронный
Вопрос:
Это рабочий пример кода, который вызывает асинхронную функцию из другого расположения и повторно использует результат с некоторыми вычислениями. В этом случае я использовал «Promise» два раза.
- первое обещание: получить значение async из другого расположения файла.
- второе обещание: дождитесь получения результата от первого обещания для повторного использования в main.js файл.
Каков эффективный способ выполнить эту операцию с использованием ‘обратных вызовов’ или ‘обещаний’?
Мой код:
в ./folder1/sub.js
function func(){
return new Promise(function(resolve,reject) {
var value = 5; // resolve value
setTimeout(function(){
value = 5;
err = false;
if(err) return reject(err);
resolve(value);
},3000);
});
}
module.exports={
getValue: func
}
в ./main.js
var sub = require('./folder1/sub');
function nextfunc(){
return new Promise(function(resolve,reject){
sub.getValue().then(function(val){
console.log(val);
// do some calculations
val =5;
err = false;
if(err) return reject(err);
resolve(val);
});
});
}
var last = nextfunc();
last.then(function(last){
console.log('last -', last);
});
Ответ №1:
Попробуйте что-то вроде этого
Функция
module.exports = function func(value){
return new Promise(function(resolve,reject) {
var value = 5; // remove value from here
.....
Главная
var sub = require('./folder1/sub');
function nextfunc(){
return sub.getValue(initialValue).then(function(val){
return sub.getValue(val)
});
}
var last = nextfunc();
last.then(function(last){
console.log('last -', last);
});