Как правильно сделать наконец то обещание?

Могу ли я добавить, наконец, эквивалентный этому?

functionReturningPromise()
   .then(success => {})
   .catch(error => {})

Или я должен сделать это таким образом (это даже работает, как ожидалось)?

functionReturningPromise()
   .then(success => {},error => {}).then(() => { /* finally code */ })
-1
Schneyer 3 Май 2019 в 12:10

3 ответа

Лучший ответ

Вы можете использовать

.finally()

Примере:

functionReturningPromise()
.then(data=>console.log(data))
.catch(error=>console.log(error))
.finally(()=>console.log("FINISH"))

Окончательно называется всегда

1
Nicolai Kamphenkel 3 Май 2019 в 09:13

Да, наконец-то работает с обещаниями.

Примере:

let isLoading = true;

fetch(myRequest).then(function(response) {
        var contentType = response.headers.get("content-type");
        if (contentType && contentType.includes("application/json")) {
            return response.json();
        }
        throw new TypeError("Oops, we haven't got JSON!");
    })
    .then(function(json) {
        /* process your JSON further */
    })
    .catch(function(error) {
        console.log(error); /* this line can also throw, e.g. when console = {} */
    })
    .finally(function() {
        isLoading = false;
    });

Для получения дополнительной информации см. https: // developer. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/finally

0
Dheeraj Gupta 3 Май 2019 в 09:21

Вы можете сделать это двумя способами:

  1. Наконец, используйте Promise.prototype.finally ()
yourPromiseFunction
  .then(function(json) { /* process your JSON further */ })
  .catch(function(error) { console.log(error); /* this line can also throw, e.g. when console = {} */ })
  .finally(function() { console.log("finally") });
  1. Или вы можете добавить дополнительный then () после catch (), чтобы сделать, наконец, во всех браузерах.

Примере:

yourPromiseFunction.then(() => console.log('Resolved'))
            .catch(() => console.log('Failed'))
            .then(() => console.log('This is your finally'));
0
Avanthika 3 Май 2019 в 09:19