So this is the code on the web3 api: https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract
It mentions that the function(err, myContract)
callback will be fired 2 times
var myContractReturned = MyContract.new(param1, param2, {
from:mySenderAddress,
data:bytecode,
gas:gasEstimate}, function(err, myContract){
if(!err) {
// NOTE: The callback will fire twice!
// Once the contract has the transactionHash property set and once its deployed on an address.
// e.g. check tx hash on the first call (transaction send)
if(!myContract.address) {
console.log(myContract.transactionHash) // The hash of the transaction, which deploys the contract
$.post('/hash', {contractAddress: myContract.address, txHash:myContract.transactionHash}, function(success){
if(success){
}
});
// check address on the second call (contract deployed)
} else {
console.log(myContract.address) // the contract address
$.post('/hash', {contractAddress: myContract.address, txHash:myContract.transactionHash}, function(success){
if(success){
}
});
}
// Note that the returned "myContractReturned" === "myContract",
// so the returned "myContractReturned" object will also get the address set.
}
});
--As a note I am currently testing this through TestRPC, so my contract is deployed and mined very quickly--
I have added 2 post requests that send data to a node.js server into the code to replicate what I am trying to do with my website.
This code works perfectly fine if you deploy the contract and wait on the webpage for this callback to happen 2 times. However, if I deploy a contract, then leave the current webpage, the 2nd callback never happens and the contract address is never received.
So my question is, if i were to put my app out into production, where it could take hours to get back the contract address. Will it never be called if the user changes to a different webpage or closes out of the site?