Недавно я пытался узнать обещания, но наткнулся на препятствие? любые предложения: Можете ли вы сказать мне, что я здесь делаю не так?
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();


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При создании экземпляра Promise вы делаете это в нижнем регистре, должно быть new Promise, а не new promise.
Поскольку вы вызываете setTimeout в случайное время, возможно, при первом вызове у него время ожидания больше, чем время второго вызова printall().
В вашем коде много опечаток.
promise должен быть Promise с большой буквы PprintString("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
почему в этом случае мой код иногда печатает 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 (); @гуру