Nodejs 8-destroy для уже объявленных переменных дает ошибку [duplicate]

Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.

Вот пример того же:

var async = require("async");

// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
    // some asynchronous operation
    $.ajax({
        url: '...',
        success: function(response) {
            result.response = response;
            _callback();
        }
    });
});

async.parallel(asyncTasks, function(){
    // result is available after performing asynchronous operation
    console.log(result)
    console.log('Done');
});

Я использую объект result для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.

Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.

34
задан alawatthe 9 December 2014 в 19:32
поделиться

2 ответа

Проблема связана с операторами {...}, имеющими несколько значений в JavaScript.

Когда { появляется в начале Statement , он всегда будет представлять block , которому нельзя назначить. Если он появится позже в Statement как выражение , тогда он будет представлять объект.

var помогает сделать это различие, поскольку за ним не может следовать инструкция , как группировка скобок :

( {a, b} = objectReturningFunction() );
53
ответ дан Jonathan Lonowski 31 August 2018 в 21:44
поделиться

Ссылка из MDN:

Повторное использование одной и той же переменной в пределах одной и той же функции или области кадра вызывает синтаксический эффект.

if (x) {
  let foo;
  let foo; // SyntaxError thrown.
}

Временная мертвая зона и ошибки с let

-3
ответ дан kingshuk basak 31 August 2018 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: