JavaScript обещает новичку

Недавно я пытался узнать обещания, но наткнулся на препятствие? любые предложения: Можете ли вы сказать мне, что я здесь делаю не так?

function printstring(string) {
  return new promise( function (resolve,reject) {
    setTimeout(function () {
      document.write(string);
      resolve();
    }, Math.floor(Math.random() * 100) + 1;)
  })
}

function printall() {
  printstring("A")
    .then(function () { return printString("C"); })
}

printall();
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
79
4

Ответы 4

При создании экземпляра Promise вы делаете это в нижнем регистре, должно быть new Promise, а не new promise.

почему в этом случае мой код иногда печатает C перед A. function printstring (string) {return new Promise ((resolve, reject) => {setTimeout (function () {document.write (string); resolve ();}, Math.floor (Math.random () * 100) + 1);})} function printall () {printstring ("A") .then (printstring ("C"))} printall (); @гуру

Usman 10.06.2018 12:07

Поскольку вы вызываете setTimeout в случайное время, возможно, при первом вызове у него время ожидания больше, чем время второго вызова printall().

cgolding 10.06.2018 18:09

В вашем коде много опечаток.

  • promise должен быть Promise с большой буквы P
  • printString("C") должен быть printstring("C")
  • Math.floor(Math.random() * 100) + 1;) должен быть Math.floor(Math.random() * 100) + 1);

Если вы хотите понаблюдать, как setInterval вместе с Promise работает в этом случае, увеличьте его задержку (хотя он отлично работает с любым значением).

function printstring(string) {
  return new Promise( function (resolve,reject) {
    setTimeout(function () {
      document.write(string);
      resolve();
    }, Math.floor(Math.random() * 1000) + 1);
  })
}

function printall(){
  printstring("A")
    .then(function () { return printstring("C"); })
}
printall();

Небольшое примечание: избегайте использования document.write(string);, это действительно старый способ размещения контента на вашем веб-сайте. Вместо этого используйте что-то вроде innerHTML или textContent. В этом конкретном случае вы можете заменить эту строку на document.body.textContent += string;.

function printString(string){
    return new Promise(function(resolve, reject){
        setTimeout(function(){
            document.write(string);
            resolve();
        }, Math.floor(Math.round() * 100) +1)
    })
}

function printAll(){
    printString("Test").then(function(res){
        printString("<br>sample<br>");
    })
}

printAll();

Promise должно быть Promise (начинается с заглавной буквы P), см. документ Обещание в JavaScript

    function printstring(string) {
        return new Promise( (resolve, reject)=> {
            setTimeout(
                () => {
                    console.info(string);
                    resolve();
                }, Math.floor(Math.random() * 100) + 1);

        })
    }

    function printall() {

        printstring("A")
            .then(function () {
                return printstring("C");
            })

    }
    printall();




    Better use Es6 arrow functions.this makes your code cleaner.
  i was using node so replaced document.write with console.info

Другие вопросы по теме