JavaScript обещает новичку - PullRequest
0 голосов
/ 10 июня 2018

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

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();

Ответы [ 4 ]

0 голосов
/ 10 июня 2018
    function printstring(string) {
        return new Promise( (resolve, reject)=> {
            setTimeout(
                () => {
                    console.log(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.log
0 голосов
/ 10 июня 2018

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

  • 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;.

0 голосов
/ 10 июня 2018

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();

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

0 голосов
/ 10 июня 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...