Вместо ожидания произвольного тайм-аута установите script.onload
на функцию обратного вызова и выполните настройки там.
$button.addEventListener('click', () => {
$button.innerHTML = 'Waiting for response...';
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://checkout.stripe.com/checkout.js";
script.onload = function () {
// Now that we have the script loaded, we can create the stripe handler...
const handler = StripeCheckout.configure({
key: STRIPE_PUBLISHABLE_KEY,
image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
locale: 'auto',
closed: function () {
resetButtonText();
},
token: function(token) {
fetch(`${LAMBDA_ENDPOINT}purchase`, {
method: 'POST',
body: JSON.stringify({
token,
amount,
idempotency_key: uuid()
}),
headers: new Headers({
'Content-Type': 'application/json'
})
})
.then(res => res.json())
.catch(error => console.error(error))
.then(response => {
resetButtonText();
let message = typeof response === 'object' && response.status === 'succeeded'
? 'Charge was successful!'
: 'Charge failed.'
$messageBox.querySelector('h2').innerHTML = message;
console.log(response);
});
}
});
// and use the handler to do whatever we want.
handler.open({
amount,
name: 'Test Shop',
description: 'A Fantastic New Widget'
});
};
document.getElementsByTagName("head")[0].appendChild(script);
});
Поскольку Вы нашли,-r опция является Вашим другом. Это также работает с IRB:
irb -ropen-uri
Сделает то же как require 'open-uri'
FWIW, наиболее распространенная вещь, которую я должен включать через командную строку, является rubygems. И так как более новые версии рубина идут с драгоценными камнями, встроенными, я не хочу редактировать файл, но включать его для тестирования. К счастью люди, которые создали драгоценные камни, добавили немного сахара псевдонима.
Можно сделать следующее:
ruby -rubygems myscript.rb
Вместо ужасного:
ruby -rrubygems myscript.rb
Хорошо, таким образом, это - один символ, но думало, что была дополнительная полировка для создания меня более счастливым.
На самом деле я нашел его. Это-r запись командной строки.
Можно использовать:
require 'some_ruby_file'
в некоторых-script.rb. Это загрузит some_ruby_file.rb.